home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #14 / Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO / utils / mousk304.zip / MOUSKEYS.DOC < prev   
Text File  |  1996-02-04  |  95KB  |  1,997 lines

  1.  
  2.  
  3.  
  4.  
  5.                                   MOUSKEYS 3.04
  6.  
  7.                                 TABLE OF CONTENTS
  8.  
  9.  
  10.     WHAT IS MOUSKEYS? . . . . . . . . . . . . . . . . . . . . . . . . . .   3
  11.  
  12.     HOW TO USE MOUSKEYS . . . . . . . . . . . . . . . . . . . . . . . . .   3
  13.  
  14.     COMMAND LINE OPTIONS  . . . . . . . . . . . . . . . . . . . . . . . .   6
  15.          Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   6
  16.          Quiet  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   6
  17.          Table  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   7
  18.          Disable  . . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
  19.          Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
  20.          Uninstall  . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
  21.          ResetMouseHardware . . . . . . . . . . . . . . . . . . . . . . .   9
  22.          ClipboardContents  . . . . . . . . . . . . . . . . . . . . . . .  10
  23.          LengthOfDelay  . . . . . . . . . . . . . . . . . . . . . . . . .  10
  24.          StuffKeyboardBuffer  . . . . . . . . . . . . . . . . . . . . . .  11
  25.          KeyboardHardwareInterrupt  . . . . . . . . . . . . . . . . . . .  11
  26.          AlwaysDoEnter  . . . . . . . . . . . . . . . . . . . . . . . . .  12
  27.          Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12
  28.          Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  29.          Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  30.  
  31.     THE MOUSKEYS ENVIRONMENT VARIABLE . . . . . . . . . . . . . . . . . .  18
  32.  
  33.     CODE WORDS RECOGNIZED BY MOUSKEYS . . . . . . . . . . . . . . . . . .  19
  34.  
  35.     DECIMAL ASCII CODES . . . . . . . . . . . . . . . . . . . . . . . . .  20
  36.  
  37.     DECIMAL EXTENDED ASCII CODES  . . . . . . . . . . . . . . . . . . . .  21
  38.  
  39.     DECIMAL KEYBOARD SCAN CODES . . . . . . . . . . . . . . . . . . . . .  21
  40.  
  41.     MOUSKEYS AND THE MOUSE CURSOR . . . . . . . . . . . . . . . . . . . .  22
  42.  
  43.     MOUSKEYS AND MENUS  . . . . . . . . . . . . . . . . . . . . . . . . .  26
  44.  
  45.     CHANGING MODES ON THE FLY . . . . . . . . . . . . . . . . . . . . . .  28
  46.  
  47.     THE MICROSOFT MOUSE DRIVER  . . . . . . . . . . . . . . . . . . . . .  29
  48.  
  49.     CAVEATS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  30
  50.  
  51.     WHY I WROTE MOUSKEYS THE WAY I DID  . . . . . . . . . . . . . . . . .  32
  52.  
  53.     A WORD FROM THE SPONSOR . . . . . . . . . . . . . . . . . . . . . . .  33
  54.  
  55.     OTHER PROGRAMS  . . . . . . . . . . . . . . . . . . . . . . . . . . .  33
  56.  
  57.  
  58.                         MOUSKEYS 3.04        Page 1 of 35
  59.  
  60.  
  61.  
  62.     WARRANTY  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  34
  63.  
  64.     REVISION HISTORY  . . . . . . . . . . . . . . . . . . . . . . . . . .  34
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.                         MOUSKEYS 3.04        Page 2 of 35
  116.  
  117.  
  118.  
  119.     Do you have a mouse attached to your computer?  Do you have any programs
  120.     that you wish used that mouse, but they don't?  Then MOUSKEYS is for you.
  121.  
  122.  
  123.     WHAT IS MOUSKEYS?
  124.     ═════════════════
  125.     * A program that "fakes" other programs into thinking keystrokes came
  126.       from the keyboard, when they really didn't - they were initiated by a
  127.       mouse.  It works similar to other programs, e.g., the LogiMenu program
  128.       that comes with LogiTech mice.  The major difference, however, is that
  129.       MOUSKEYS will let the mouse enter ANY keystroke, not just ASCII
  130.       characters.
  131.     * A Terminate-and-Stay-Resident (TSR) program.  It uses approximately 6K
  132.       (6000 bytes) of RAM (Random Access Memory).
  133.     * A program that can have any of its settings changed, be ENABLEd (turned
  134.       on), DISABLEd (turned off), or UNINSTALLed (completely removed from
  135.       memory) at any time from the DOS prompt.
  136.     * A program that helps your mouse load faster for virtually all programs
  137.       that use a mouse, not just MOUSKEYS.
  138.  
  139.  
  140.     HOW TO USE MOUSKEYS
  141.     ═══════════════════
  142.     First of all, MOUSKEYS works in association with a Microsoft (or
  143.     compatible) mouse and its corresponding Mouse Driver (MOUSE.COM,
  144.     MOUSE.EXE, or MOUSE.SYS).  You must have the Mouse Driver installed
  145.     before MOUSKEYS will work.  See the documentation that came with your
  146.     mouse if you need any further details.
  147.  
  148.     MOUSKEYS is a Terminate and Stay Resident (TSR) program that runs in the
  149.     background of most other programs.  MOUSKEYS allows you to use your mouse
  150.     with almost any program, even if it wasn't designed to use a mouse.  When
  151.     you move the mouse or press and release one of the mouse buttons,
  152.     MOUSKEYS will make a program think you typed something on the keyboard. 
  153.     Programs will think you are typing from the keyboard when, in fact, you
  154.     aren't.
  155.  
  156.     MOUSKEYS will also speed up the way your mouse loads with almost any
  157.     program that normally uses a mouse (not just MOUSKEYS).  With MOUSKEYS
  158.     installed in memory, a program that normally uses a mouse will usually
  159.     load much faster than it does without MOUSKEYS installed (sometimes by as
  160.     much as several seconds).  A more detailed description of this is given
  161.     below under the "MOUSKEYS /R" Option.
  162.  
  163.     You install MOUSKEYS into memory by typing MOUSKEYS [options] at the DOS
  164.     command line.  If MOUSKEYS is already installed in memory, typing
  165.     MOUSKEYS [options] will update the MOUSKEYS already in memory.  Any time
  166.     MOUSKEYS is updated in memory, the Mouse Driver is told to start looking
  167.     at MOUSKEYS again.  There is a rather lengthy discussion of why this is
  168.     necessary below under "THE MICROSOFT MOUSE DRIVER".
  169.  
  170.  
  171.  
  172.                         MOUSKEYS 3.04        Page 3 of 35
  173.  
  174.  
  175.  
  176.     This means, for example, that you can load MOUSKEYS into memory when you
  177.     first start your computer (in your AUTOEXEC.BAT file), and leave it in
  178.     place all the time.  It can be DISABLEd (MOUSKEYS /D) until you need it,
  179.     ENABLEd and updated (e.g., MOUSKEYS /E /Mx:Code /Bx:Code /L:nn) to run a
  180.     particular program, and then DISABLEd until it is needed again (MOUSKEYS
  181.     /D).  Since MOUSKEYS only uses about 6K of RAM, and can be loaded into
  182.     high memory, leaving it in memory shouldn't be much of a burden to your
  183.     computer.  However, if it is, you can always UNINSTALL it (MOUSKEYS /U)
  184.     from memory completely until you need it again.
  185.  
  186.     MOUSKEYS is probably most useful in Batch files (if you don't know how to
  187.     write Batch files, I strongly encourage you to learn - the ability to
  188.     write and use Batch files will save you literally hours of work and
  189.     frustration in years to come).  If you know how to write Batch files, you
  190.     can have MOUSKEYS automatically ENABLE and DISABLE itself for each
  191.     particular program with which you want to use MOUSKEYS.  For example, you
  192.     could write a batch file to run "Program" like this:
  193.  
  194.         ECHO OFF
  195.         MOUSKEYS /Enable [other options]
  196.           REM Turn MOUSKEYS On and Reset It
  197.         IF ERRORLEVEL 1 GOTO ERROR
  198.         Program
  199.         MOUSKEYS /Disable
  200.           REM Turn MOUSKEYS Off
  201.         GOTO END
  202.       :ERROR
  203.         ECHO Error occurred while installing/updating MOUSKEYS.
  204.       :END
  205.  
  206.     You could then use your mouse with "Program" instead of (or in addition
  207.     to) the keyboard.
  208.  
  209.     MOUSKEYS has several "modes" in which it can operate, some of which can
  210.     be changed "on the fly" by holding down the Shift, Alt, and/or Ctrl keys
  211.     while pushing one or more of the mouse buttons.  What exactly these
  212.     various "modes of operation" are and how to change back and forth between
  213.     them is discussed in the various sections below.
  214.  
  215.     MOUSKEYS sets the following ERRORLEVELs after it executes from the DOS
  216.     command line, to give you an indication of what happened.  If you don't
  217.     understand the purpose or value of ERRORLEVELs, I suggest you read about
  218.     them in your DOS manual.
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.                         MOUSKEYS 3.04        Page 4 of 35
  230.  
  231.  
  232.  
  233.      ╔════════════╦═════════════════════════════════════════════════════╗
  234.      ║ ERRORLEVEL ║                     MEANING                         ║
  235.      ╠════════════╬═════════════════════════════════════════════════════╣
  236.      ║      0     ║ No problem - MOUSKEYS was installed or updated OK   ║
  237.      ║      1     ║ Couldn't understand one or more of the Options      ║
  238.      ║      2     ║ Couldn't find a Mouse Driver                        ║
  239.      ║      3     ║ Memory problem with the computer                    ║
  240.      ║      4     ║ Tried UNINSTALL or TABLE without MOUSKEYS installed ║
  241.      ║      5     ║ A different version of MOUSKEYS was found in memory ║
  242.      ╚════════════╩═════════════════════════════════════════════════════╝
  243.  
  244.     There is no sure way of telling beforehand whether a particular program
  245.     will work with MOUSKEYS or not, though most programs should work just
  246.     fine.  You will just have to try it with any program in which you're
  247.     interested.
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.                         MOUSKEYS 3.04        Page 5 of 35
  287.  
  288.  
  289.  
  290.     COMMAND LINE OPTIONS
  291.     ════════════════════
  292.     MOUSKEYS is fairly liberal in what it will accept as Options.  All
  293.     Options must be entered separately, and must start with a "/".  Options
  294.     that require a number or character to be entered as part of the Option
  295.     (indicated by a ":" separator in the lists below) can either use a ":" or
  296.     "=" as the separator.  They can be upper or lower case, do not need to be
  297.     separated by spaces, and can be entered in any order.  If the same Option
  298.     is entered twice with two different settings, or conflicting Options are
  299.     entered, the last one entered takes precedence.
  300.  
  301.     Note also that there are usually several different ways to enter the same
  302.     Option.  For example, to DISABLE MOUSKEYS (turn it off), you could type
  303.     any of the following:  "MOUSKEYS /D", "MOUSKEYS /Disable", or
  304.     "MOUSKEYS /Off".  The Options all have a "shorthand" code ("/D" in this
  305.     case) and one or more "longhand" codes ("/Disable" and "/Off" in this
  306.     example).  The "shorthand" codes take up much less room and are easier to
  307.     type, but the "longhand" codes are probably easier to remember and to
  308.     read.  You can use whichever makes the most sense to you.
  309.  
  310.     For instance, the following are equivalent:
  311.       MOUSKEYS /MoveLeft=Left  /ButtonLeft&Right=@80 /DelayLength:2 /Disable
  312.       MOUSKEYS /mL = LEFT      /BLR:@80              /l=1/L=2       /d
  313.  
  314.  
  315.       /H
  316.       /Help /? ?
  317.  
  318.          This pulls up a HELP screen which gives a quick summary of the
  319.          possible command line Options for MOUSKEYS.
  320.  
  321.  
  322.       /Q
  323.       /Quiet
  324.  
  325.          This tells MOUSKEYS to be QUIET (not to print any status messages to
  326.          the screen), as long as everything is OK.  MOUSKEYS always prints
  327.          error messages to the screen.
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.                         MOUSKEYS 3.04        Page 6 of 35
  344.  
  345.  
  346.  
  347.       /T
  348.       /Table /Tbl /StatusTable /StatusTbl /Status
  349.  
  350.          This pulls up a TABLE that shows the current status of MOUSKEYS as
  351.          it sits in memory.  A typical example for a two-button mouse is: 
  352.              ╔═════════════════════════════════════════════════╗
  353.              ║      Current MOUSKEYS Status:   Enabled         ║
  354.              ║    Simulating KEYBOARD hardware Scan Codes      ║
  355.              ║  Type <Enter> ONLY after multi-digit menu items ║
  356.              ║ Clipboard: "The Clipboard's first few chars"... ║
  357.              ╠═════════════════════════════════════════════════╣
  358.              ║   Delay LENGTHS: Horizontal=  1 Vertical=  3    ║
  359.              ╠════════════════╦══════════════╤═════════════════╣
  360.              ║   Characters   ║    ASCII     │   Scan Codes    ║
  361.              ╟────────────────╫──────────────┼─────────────────╢
  362.              ║ Left Button ...║*Enter     13*│  28   0   0   0 ║
  363.              ║ Right Button ..║ Escape    27 │   1   0   0   0 ║
  364.              ║ Both Buttons ..║ "a"       97 │  30   0   0   0 ║
  365.              ╟────────────────╫──────────────┼─────────────────╢
  366.              ║ Move Left .....║ GLeft   @ 75 │ 224  75   0   0 ║
  367.              ║ Move Right ....║ GRight  @ 77 │ 224  77   0   0 ║
  368.              ║ Move Up .......║ GreyUp  @ 72 │ 224  72   0   0 ║
  369.              ║ Move Down .....║ GDown   @ 80 │ 224  80   0   0 ║
  370.              ╚════════════════╩══════════════╧═════════════════╝
  371.  
  372.          The first line indicates whether MOUSKEYS is ENABLEd or DISABLEd
  373.          (turned on or turned off).  The second line indicates which mode
  374.          MOUSKEYS is in: STUFFing the Keyboard Buffer with ASCII codes or
  375.          simulating KEYBOARD hardware interrupts with Scan Codes (a further
  376.          description of what this means is given below).  The third line
  377.          indicates whether MOUSKEYS types an <Enter> key after ALL menu items
  378.          or ONLY after multi-digit menu items, when MOUSKEYS is used as a
  379.          Menu Picker (see further detailed descriptions below).  The fourth
  380.          line shows you the first several characters that are in the
  381.          Clipboard (exactly what the Clipboard is and does is discussed in
  382.          the various sections below).  If the Clipboard does not contain any
  383.          information, this line in the TABLE will read "Clipboard: Empty". 
  384.          The fourth line indicates the current settings for delay LENGTHs
  385.          (how sensitive the mouse is to being moved).  The remaining lines
  386.          indicate the keystrokes that MOUSKEYS performs when mouse button(s)
  387.          are pressed or the mouse is moved.
  388.  
  389.          The column labeled "ASCII" first contains a description of the key,
  390.          followed by the decimal ASCII code for the character (for example,
  391.          the ASCII code for the Enter key is 13).  If the character is an
  392.          Extended ASCII character (Function keys, arrow keys, etc.) there is
  393.          an "@" symbol in front of the ASCII code.  There are further details
  394.          on ASCII codes, Extended ASCII codes, Scan Codes, the significance
  395.          of the "@" symbol, etc., in the various sections below.
  396.  
  397.  
  398.  
  399.  
  400.                         MOUSKEYS 3.04        Page 7 of 35
  401.  
  402.  
  403.  
  404.          Also in this example, the ASCII code for the Left Button is
  405.          surrounded by two *'s.  This indicates that the Mouse Cursor is
  406.          turned on, and that the Left Mouse button is used as a Menu Picker,
  407.          Clipboard, and/or Cursor Mover button.  Further descriptions of
  408.          Mouse Cursor, Menu Picker, Clipboard, and Cursor Mover are given
  409.          below.
  410.  
  411.          The /T (TABLE) Option only works if MOUSKEYS is already installed in
  412.          memory.
  413.  
  414.  
  415.       /D
  416.       /Disable /Off
  417.  
  418.          This DISABLEs MOUSKEYS.  MOUSKEYS remains in memory with the /D
  419.          Option, but doesn't do anything useful.  It can be reENABLEd with
  420.          the /E Option.  It can be UNINSTALLed from memory completely with
  421.          the /U Option.
  422.  
  423.  
  424.       /E
  425.       /Enable /Reset /On
  426.  
  427.          This ENABLEs and Resets MOUSKEYS.  This will turn MOUSKEYS back on
  428.          after you have DISABLEd it with /D.  Whether MOUSKEYS was DISABLEd
  429.          or not, /E WILL RESET EVERYTHING, except the Clipboard, back to the
  430.          defaults (the delay LENGTHs, ASCII codes, Scan Codes, and ASCII/Scan
  431.          Code use Options).  When MOUSKEYS is initially installed in memory,
  432.          the default is /E (MOUSKEYS is ENABLEd).
  433.  
  434.          Because the last Option entered on the command line always takes
  435.          precedence, you should usually make /E the first Option you enter. 
  436.          For example, "MOUSKEYS /E /ML='1'" ENABLEs MOUSKEYS, Resets
  437.          everything back to the default values, and THEN changes the Left
  438.          Movement character to '1'.  The end result of a
  439.          "MOUSKEYS /ML=F1 /E" will be to simply ENABLE and Reset MOUSKEYS,
  440.          just as if the "/ML=F1" had never been entered.
  441.  
  442.  
  443.       /U
  444.       /Uninstall /Remove
  445.  
  446.          This will permanently UNINSTALL (or at least try to UNINSTALL)
  447.          MOUSKEYS from memory.  Effectively, the same thing can be
  448.          accomplished with MOUSKEYS /D, but MOUSKEYS /U will free up about 6K
  449.          of RAM on your machine to use for other things.
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.                         MOUSKEYS 3.04        Page 8 of 35
  458.  
  459.  
  460.  
  461.       /R
  462.       /ResetMouseHardware /ResetMouseHdwre /ResetMouse
  463.       /ResetHardware /ResetHdwre /HardwareReset /HdwreReset
  464.  
  465.          This is how you force MOUSKEYS to RESET the Mouse Hardware.  The
  466.          purpose of this Option requires some explanation.
  467.       
  468.          Let's assume for a moment that you do not have MOUSKEYS installed in
  469.          memory.  You start to load a program that normally uses a mouse (it
  470.          doesn't matter which one, as long as it normally uses a mouse).  If
  471.          you pay attention while the program is loading, you may notice a
  472.          long delay (usually one to five seconds), during which the program
  473.          doesn't seem to be doing anything.  This delay is caused by the
  474.          Mouse Driver (MOUSE.COM, MOUSE.EXE, or MOUSE.SYS).
  475.  
  476.          When a program uses a mouse, one of the first things it does is to
  477.          ask the Mouse Driver if your computer even has a mouse installed. 
  478.          If you have a mouse installed, the Mouse Driver tells the program
  479.          about it, and it also does something else - it "Resets the Mouse
  480.          Hardware."  I don't know exactly what "Resetting the Mouse Hardware"
  481.          does, but I know it takes a long time to do.  Some mice do it faster
  482.          than others.  My Logitech mouse at home, for example, takes less
  483.          than 1 second to Reset the Hardware.  My Microsoft mouse at work,
  484.          however, takes more than 2 seconds (although 2 seconds sounds pretty
  485.          fast, it seems like a very long time when it's unnecessary).
  486.  
  487.          As far as I can tell, the only reason programs ask the Mouse Driver
  488.          to do a Hardware Reset on the Mouse is because that's what Microsoft
  489.          told them they had to do.  There is also another way to ask the
  490.          Mouse Driver if the computer has a mouse or not.  The second way of
  491.          asking, instead of Resetting the Mouse Hardware, just Resets the
  492.          Mouse Software (the Mouse Driver).  Resetting the Software happens
  493.          so fast that you don't even notice it.
  494.  
  495.          Most programs just go through the Mouse Driver (software) to get to
  496.          the Mouse.  There are also others that directly manipulate the Mouse
  497.          Hardware, but restore things back to normal when they get finished. 
  498.          There is only one program I have found so far that screws things up
  499.          so bad that you actually have to Reset the Mouse Hardware when you
  500.          use it - Microsoft Windows.  There may be other programs out there
  501.          somewhere that require Hardware Resets of the mouse, but I haven't
  502.          ran across them yet.
  503.  
  504.          While MOUSKEYS is installed in memory, when a program asks the Mouse
  505.          Driver to do a Hardware Reset, MOUSKEYS intercepts it and changes it
  506.          to a Software Reset (unless you are running Microsoft Windows). 
  507.          Programs never know the difference, and they will load much faster
  508.          (sometimes by as much as several seconds).  MOUSKEYS knows when you
  509.          are running Microsoft Windows, and when you are, lets the Hardware
  510.          Resets go through unchanged.
  511.  
  512.  
  513.  
  514.                         MOUSKEYS 3.04        Page 9 of 35
  515.  
  516.  
  517.  
  518.          The /R (Hardware RESET) Option is for you to use when you run across
  519.          a program that requires a Hardware Reset of the Mouse (other than
  520.          Microsoft Windows, which is handled automatically by MOUSKEYS). 
  521.          When a program messes up the Mouse Hardware, it will screw up the
  522.          programs that you try and run AFTER it runs.  If a program messes up
  523.          the Mouse Hardware, you will need to do a "MOUSKEYS /R" after you
  524.          get out of the program, not before you get into it (the best way to
  525.          do this is with a Batch File).
  526.  
  527.          Note that when you install MOUSKEYS into memory (the first time you
  528.          type "MOUSKEYS [options]", which will probably be in your
  529.          AUTOEXEC.BAT file), MOUSKEYS always does a Hardware Reset, even if
  530.          you don't give it a /R option.  This is because MOUSKEYS cannot tell
  531.          whether or not you need to do a Hardware Reset (you may have just
  532.          exited out of Microsoft Windows, for example).  MOUSKEYS plays it
  533.          safe and does a Hardware Reset when you first install it.  After it
  534.          is installed, all programs, including MOUSKEYS, will do a Software
  535.          Reset (unless, of course, Microsoft Windows is somehow involved).
  536.  
  537.  
  538.       /C:"Txt"
  539.       /ClipboardContents:"Txt" /ClipbrdContents:"Txt" /ClipbdContents:"Txt"
  540.       /Clipboard:"Txt" /Clipbrd:"Txt" /Clipbd:"Txt"
  541.  
  542.          This will enter "Txt" into the Clipboard, overwriting whatever was
  543.          in the Clipboard before (if there was anything).  You can surround
  544.          the text either with double quotes (") or single quotes ('). 
  545.          Normally, you copy text into the Clipboard using the mouse, but this
  546.          is another way to do it.  Exactly what the Clipboard is and how to
  547.          use it is discussed in the various sections below, especially in the
  548.          section "MOUSKEYS AND THE MOUSE CURSOR".
  549.  
  550.  
  551.       /L:nn /LH:nn /LV:nn
  552.        LengthOfDelay LengthOfDly LenOfDelay LenOfDly Length Len
  553.        DelayLength DelayLen DlyLength DlyLen Delay Dly
  554.               Horizontal Horiz Hor
  555.                      Vertical Vert Ver
  556.  
  557.          These Options are how you adjust the sensitivity of the mouse.  The
  558.          nn is the LENGTH of the delay (in Mickeys) MOUSKEYS uses between
  559.          sending one character and the next.  /LH adjusts the HORIZONTAL
  560.          (left-right) delay, /LV adjusts the VERTICAL (up-down) delay, and /L
  561.          adjusts them both.  Nn can be any number between 1 and 100.
  562.  
  563.          In place of the "L", you can use "LengthOfDelay", LengthOfDly", etc. 
  564.          In place of the "H", you can use "Horizontal", "Horiz", or "Hor",
  565.          and in place of the "V" you can use "Vertical", "Vert", or "Ver". 
  566.          The following, for example, are equivalent:
  567.            MOUSKEYS /LH:1                      /LV:3
  568.            MOUSKEYS /LengthofDelayHorizontal=1 /DelayVert=3
  569.  
  570.  
  571.                         MOUSKEYS 3.04        Page 10 of 35
  572.  
  573.  
  574.  
  575.          The delay LENGTH is measured in Mickeys.  Right now, you're probably
  576.          asking, "What's a Mickey?"
  577.  
  578.          When you move the mouse back and forth across the table, the mouse
  579.          is continually sending information back and forth to the computer.
  580.          The amount you move the mouse is measured in Mickeys, where 1 Mickey
  581.          = 1/200" (or so they say).  Every time you move the mouse 1/200" in
  582.          any direction, it tells the computer (through the Mouse Driver) that
  583.          it moved 1 Mickey.
  584.  
  585.          You can have MOUSKEYS send a movement character every time the mouse
  586.          moves 1 Mickey by setting LH and/or LV to 1.  For a lot of programs,
  587.          though, this is far too sensitive.  1/200" is not very far to move
  588.          the mouse.  Virtually every time you breathe you can accidentally
  589.          move the mouse 1 Mickey.  You can also have MOUSKEYS wait for the
  590.          mouse to be drug halfway across the table before it sends a
  591.          character by setting LH and/or LV to 100.  The most useful values
  592.          for delay LENGTHs are usually between 1 and 10.  You will have to
  593.          experiment with different delay LENGTHs for different programs to
  594.          see what works best.
  595.  
  596.          The defaults are LH=1 and LV=3.
  597.  
  598.  
  599.       /S /K
  600.       /StuffKeyboardBuffer /StuffKeyboardBuff /StuffKbdBuffer
  601.       /StuffKbdBuff /StuffBuffer /StuffBuff /Stuff /ASCII
  602.          /KeyboardHardwareInterrupt /KeyboardHardwareInt
  603.          /KeyboardHdwreInterrupt /KeyboardHdwreInt /KbdHardwareInterrupt
  604.          /KbdHardwareInt /KbdHdwreInterrupt /KbdHdwreInt
  605.          /HardwareInterrupt /HardwareInt /HdwreInterrupt /HdwreInt
  606.          /Interrupt /Int /ScanCodes /ScanCode
  607.  
  608.          These two Options are complements of each other.  MOUSKEYS /S tells
  609.          MOUSKEYS to STUFF the Keyboard Buffer with ASCII codes.  MOUSKEYS /K
  610.          tells MOUSKEYS to perform a "fake" KEYBOARD hardware interrupt using
  611.          Scan Codes.  The difference between the two requires a rather
  612.          lengthy explanation.
  613.  
  614.          When you press (or release) a key on the keyboard, the keyboard
  615.          generates what is known as a hardware interrupt.  This tells the
  616.          computer that the keyboard has a keystroke waiting for it.  When the
  617.          computer is ready for the keystroke, it asks the keyboard to tell it
  618.          which key was pressed or released.  The keyboard responds by giving
  619.          the computer a Scan Code.  Each key on the keyboard has a unique
  620.          Scan Code (or set of Scan Codes) when it is pressed, and a different
  621.          Scan Code (or set of Scan Codes) when it is released.
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.                         MOUSKEYS 3.04        Page 11 of 35
  629.  
  630.  
  631.  
  632.          The Scan Code is then processed by the BIOS (Basic Input Output
  633.          System).  Depending on which key was pressed or released, and which
  634.          key(s) were pressed or released before that, the BIOS either stuffs
  635.          an ASCII character into the Keyboard Buffer, remembers that the key
  636.          was a "Shift Key" (Shift, Alt, Ctrl, CapLk, NumLk, etc.), or
  637.          performs some other function (such as printing the screen in the
  638.          case of Shift-PrtScr).  This knowledge of what went on before makes
  639.          the keyboard BIOS pretty complicated.
  640.  
  641.          For instance, if you hit the "a" key, whether or not the BIOS puts
  642.          an "a" into the Keyboard Buffer depends on how many times the CapsLk
  643.          key was previously pressed and released, and whether or not you have
  644.          the Shift, Alt, or Ctrl keys pressed at the same time.  There is not
  645.          a 1-to-1 correspondence between Scan Codes and ASCII characters. 
  646.          For example, there is no single Scan Code that corresponds to the
  647.          ASCII character 'A', and the CapsLk key doesn't have an ASCII
  648.          character at all. 
  649.  
  650.          Most programs let the BIOS handle all, or at least most, of the
  651.          keyboard work - they just take their input from the Keyboard Buffer.
  652.          If you want to use MOUSKEYS with this kind of program (again, most
  653.          programs are this way), you should use MOUSKEYS /S to STUFF the
  654.          Keyboard Buffer with ASCII characters.
  655.  
  656.          MOUSKEYS /K is intended to be used with programs that bypass the
  657.          BIOS and handle keyboard input themselves.  MOUSKEYS /K tries to
  658.          "fake" the program out by simulating a KEYBOARD hardware interrupt.
  659.          MOUSKEYS gives the computer a Scan Code (with software) that the
  660.          computer thinks came from the keyboard hardware.  Unfortunately,
  661.          this doesn't always work correctly, but it does work most of the
  662.          time.  If you're using a program and the /S Option doesn't work, try
  663.          /K.  The most likely type of program to need the /K Option would be
  664.          a game;  word processors, spreadsheets, etc. will most likely work
  665.          fine with /S.
  666.  
  667.          The default is /S (to STUFF the Keyboard Buffer with ASCII codes).
  668.  
  669.  
  670.       /A /O
  671.       /AlwaysDoEnter /AlwaysEnter /AlwaysDoCR /AlwaysCR /Always
  672.          /Only /MultiDigit /Multi
  673.  
  674.          These two Options are complements of each other, and only have an
  675.          effect when MOUSKEYS is used as a Menu Picker (see the sections
  676.          below on how to make MOUSKEYS be a Menu Picker).  MOUSKEYS /A tells
  677.          MOUSKEYS to ALWAYS type an <Enter> key after typing the menu
  678.          character(s), even if the menu item is a single-digit number or a
  679.          single letter.  MOUSKEYS /O tells MOUSKEYS to type the <Enter> key
  680.          afterwards ONLY if the menu item is a multi-digit number or a whole
  681.          word.  I know this is confusing if you haven't read the sections
  682.          below yet, so here is a brief explanation.
  683.  
  684.  
  685.                         MOUSKEYS 3.04        Page 12 of 35
  686.  
  687.  
  688.  
  689.          When MOUSKEYS is used as a Menu Picker, it searches the area on the
  690.          screen surrounding the Mouse Cursor and "guesses" what you want to
  691.          type.  This is very useful in programs with menus somewhere on the
  692.          screen where you need to type a letter or number to get the program
  693.          to do something special.  With these programs, you simply type the
  694.          letter (or number) from the menu, and the program does what you want
  695.          it to.  Other programs, however, need you to type something from the
  696.          menu and then type the <Enter> key before the program will do
  697.          anything.  The /A and /O options will let MOUSKEYS work with either
  698.          type of program.
  699.  
  700.          With the /O option, MOUSKEYS will ONLY type an <Enter> key after
  701.          picking a multi-digit number or typing an entire word from a menu. 
  702.          With the /A option, MOUSKEYS will ALWAYS type an <Enter> key after
  703.          picking a letter or number from a menu.  Note that even when in the
  704.          /A mode, MOUSKEYS will only type an <Enter> key after picking a
  705.          letter or a number from a menu.  If what MOUSKEYS finds to type from
  706.          the menu is a function key or other "special" key (like Home, End,
  707.          Arrow Keys, PgUp, PgDn, etc.), MOUSKEYS will not type an <Enter> key
  708.          afterwards even if the /A mode is selected.
  709.  
  710.          For further descriptions of Menu Picker, Mouse Cursor, multi-digit
  711.          menu items, etc., see the sections below, especially "MOUSKEYS AND
  712.          THE MOUSE CURSOR" and "MOUSKEYS AND MENUS".
  713.  
  714.          The default is /O (to type an <Enter> key ONLY after finding a
  715.          multi-digit menu item).
  716.  
  717.  
  718.       /ML:Code /MR:Code /MU:Code /MD:Code
  719.       /BL:Code /BR:Code /BC:Code /BLR:Code /BCL:Code /BCR:Code /BCLR:Code
  720.        Movement Move Mov Mv
  721.        Button Btn
  722.         Left Lft Lt
  723.                  Right Rt
  724.                           Up
  725.                           Center Ctr Middle Mid
  726.                                    Down Dn
  727.  
  728.          These Options are how you tell MOUSKEYS what ASCII characters or
  729.          Scan Codes to use when you do something with the mouse.  The first
  730.          letter or word (M or B) tells MOUSKEYS whether you are referring to
  731.          a mouse MOVEMENT or a mouse BUTTON, and the remaining character(s)
  732.          or word(s) tell you which MOVEMENT (Left, Right, Up, or Down) or
  733.          which BUTTON(s) (Left, Right, Center, Left & Right, Center & Left,
  734.          Center & Right, all three) you are referring to.
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.                         MOUSKEYS 3.04        Page 13 of 35
  743.  
  744.  
  745.  
  746.          If you have a two-button mouse, MOUSKEYS will only let you enter the
  747.          /BL, /BR, or /BLR button Options.  For button combinations (where
  748.          you press more than one button at the same time: /BLR, /BCL, /BCR,
  749.          and /BCLR) you can enter the L's, R's, and C's in any order (e.g.,
  750.          /BLR is the same thing as /BRL).  Also for button combinations, you
  751.          can enter an "&" between the L's, R's, and C's (e.g., /BLR and /BL&R
  752.          are the same.
  753.  
  754.          The following two lines, for example, are equivalent:
  755.             MOUSKEYS /MoveLeft=Left /ButtonLeft&Right=F1
  756.             MOUSKEYS /ML=Left       /BLR=F1
  757.  
  758.          The "Code" after the ":" or the "=" is the ASCII character or Scan
  759.          Code you want MOUSKEYS to use, and can be anything from the
  760.          following lists.  Of particular importance are the first two Codes
  761.          (characters enclosed in quotes and Code Words), and the * (Menu
  762.          Picker/Cursor Mover/Clipboard) Code.  These are the easiest to use
  763.          and to understand, and will handle most situations where you may
  764.          want to use MOUSKEYS.  The remaining Codes are mainly for "unusual"
  765.          situations where you want MOUSKEYS to simulate some extremely
  766.          unusual keystroke combination or if you have a particularly off-the-
  767.          wall keyboard.
  768.  
  769.           'C' or "C"
  770.                 A single ASCII character enclosed in quotes.  Actually,
  771.                 MOUSKEYS will accept just a 'C or "C, but it's better not to
  772.                 do it since it could be confusing, and since DOS doesn't
  773.                 always like it.
  774.  
  775.           CodeWord
  776.                 A Code Word for one of the keys on the keyboard (for example,
  777.                 F1, Enter, CapsLock, Shift, etc.).  See the Table below for a
  778.                 list of Code Words that MOUSKEYS recognizes.  If you want
  779.                 MOUSKEYS to simulate holding more than one key down at a
  780.                 time, you need to put a "-" between two Codes Words (for
  781.                 example, "MOUSKEYS /BL=Shift-F1" or 
  782.                 "MOUSKEYS /BL=Ctrl-Alt-Del").  You can also put a "-" between
  783.                 a Code Word and a letter or number (e.g., 
  784.                 "MOUSKEYS /BL = Ctrl-C" or "MOUSKEYS /BL=Alt-1").
  785.  
  786.                 There are two "special" Code Words that MOUSKEYS handles a
  787.                 little differently than the rest of the Code Words -
  788.                 "PrintScreen" and "Break" (or the allowable variations of
  789.                 these Code Words).  The reason these Code Words require
  790.                 special handling is that what they should do depends on the
  791.                 situation.
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.                         MOUSKEYS 3.04        Page 14 of 35
  800.  
  801.  
  802.  
  803.                 To print the screen with the keyboard from older computers
  804.                 (PC's and PC/XT's), you have to do a <Shift>-<Grey*>.  The
  805.                 keyboard that comes with newer computers (PC/AT's and newer)
  806.                 has a special <PrintScreen> key that you don't need to
  807.                 <Shift>.  MOUSKEYS knows what kind of keyboard you have, and
  808.                 when you enter the "PrintScreen" Code Word, MOUSKEYS assumes
  809.                 you will want the mouse movement or button to print the
  810.                 screen.  If you have an old computer, and you tell MOUSKEYS
  811.                 to "PrintScreen", it does a <Shift>-<Grey*>.  If you have a
  812.                 newer computer, MOUSKEYS does a <PrintScreen>.
  813.  
  814.                 Regardless of whether your computer is old or new, in order
  815.                 to "Break" a program, you have to Enter a <Ctrl>-<Break>; 
  816.                 the <Break> key all by itself does not "Break" anything.  If
  817.                 you enter the "Break" Code Word (or allowable variations of
  818.                 "Break"), MOUSKEYS automatically does a <Ctrl>-<Break>.  If
  819.                 you study the Decimal Scan Code Table below, you will see
  820.                 that <Ctrl>-<Break> on older computers (PC's and PC/XT's) is
  821.                 handled differently than it is on newer computers.  Again,
  822.                 MOUSKEYS knows whether your computer is "old" or "new", and
  823.                 handles all of the details automatically - you just have to
  824.                 give MOUSKEYS the "Break" Code Word.
  825.  
  826.           nnn (decimal ASCII code)
  827.                 A decimal ASCII code.  This is the way to enter ASCII
  828.                 characters you can't enter using the quotes or the Code
  829.                 Words.  It will probably be a fairly rare situation when the
  830.                 quotes or Code Words won't work, so you probably won't be
  831.                 entering decimal ASCII codes very often (except for the do-
  832.                 nothing code of 0).  Entering a 0 tells MOUSKEYS not to do
  833.                 anything (to ignore that particular mouse movement or
  834.                 button).  See the Table below for a list of decimal ASCII
  835.                 codes.
  836.  
  837.  
  838.  
  839.           @nnn (extended ASCII code)
  840.                 An Extended ASCII code.  Extended ASCII codes include things
  841.                 like function keys, arrow keys, Home, End, PgUp, PgDn, Ins,
  842.                 Del, etc.  Most Extended ASCII codes also have an equivalent
  843.                 Code Word (for example "MOUSKEYS /BL:@59" is the same as
  844.                 "MOUSKEYS /BL:F1").  Since Code Words are usually easier to
  845.                 use, you probably won't be entering Extended ASCII codes with
  846.                 "@nnn" very often.  See the Table below for a list of
  847.                 Extended ASCII codes.
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.                         MOUSKEYS 3.04        Page 15 of 35
  857.  
  858.  
  859.  
  860.           #nn,nn,nn,nn
  861.                 A list of up to four Scan Codes to use when performing a
  862.                 "fake" KEYBOARD hardware interrupt.  The individual Scan
  863.                 Codes must be separated by commas.  With this Option,
  864.                 MOUSKEYS does not attempt to obtain a corresponding ASCII
  865.                 code (see the detailed explanation below).  Use the &nn
  866.                 Option to also obtain an ASCII code.  See the Tables below
  867.                 for a list of Scan Codes.
  868.  
  869.           &nn,nn,nn,nn
  870.                 A list of up to four Scan Codes to use when performing a
  871.                 "fake" KEYBOARD hardware interrupt.  The individual Scan
  872.                 Codes must be separated by commas.  With this Option,
  873.                 MOUSKEYS attempts to obtain a corresponding ASCII code (see
  874.                 the detailed explanation below).  Use the #nn Option if you
  875.                 do not want an ASCII code.  See the Tables below for a list
  876.                 of Scan Codes.  There are some special keystroke sequences
  877.                 discussed below in the section called "CAVEATS" that do not
  878.                 work correctly when using the &nn,nn,nn,nn Option.
  879.  
  880.           ?  Ask  AskMe
  881.                 This is for when you don't want to look up a code in one of
  882.                 the tables.  When you enter a ? (or "Ask" or "AskMe"),
  883.                 MOUSKEYS comes back and asks you what character or key you
  884.                 would like to use - and you have to type it on the keyboard. 
  885.                 If you are using MOUSKEYS in a Batch file to start a program,
  886.                 you probably wouldn't want to use the ? Option (since
  887.                 MOUSKEYS will stop the batch file in the middle to ask you
  888.                 what characters you want to use).  There are some special
  889.                 keystroke sequences discussed below in the section called
  890.                 "CAVEATS" that do not work correctly when using a ?.
  891.  
  892.           * Menu MenuPick MenuPicker Copy CopyBuff CopyBuffer
  893.                 This Option only works for buttons, not for movements.  When
  894.                 you enter a * (or "Menu" or "MenuPick" or ...) for one of the
  895.                 buttons, MOUSKEYS becomes a Menu Picker/Cursor Mover/
  896.                 Clipboard.  In becoming a Menu Picker, MOUSKEYS completely
  897.                 changes its personality.  The personality change is so
  898.                 radical, in fact, that it is too lengthy to discuss here. 
  899.                 Read the section below called "MOUSKEYS AND THE MOUSE CURSOR"
  900.                 for a complete description.
  901.  
  902.           *- Menu- MenuPick- MenuPicker- Cpy- Copy- CopyBuff- CopyBuffer-
  903.                 This Option only works for buttons, not for movements.  When
  904.                 you enter a *- (or "Menu-" or "MenuPick-" or ...) for one of
  905.                 the buttons, MOUSKEYS turns its Menu Picker/Cursor Mover/
  906.                 Clipboard off and becomes a "regular" mouse button.  The
  907.                 concept of a Menu Picker is rather complicated, and is
  908.                 discussed below in the section called "MOUSKEYS AND THE MOUSE
  909.                 CURSOR".
  910.  
  911.  
  912.  
  913.                         MOUSKEYS 3.04        Page 16 of 35
  914.  
  915.  
  916.  
  917.          MOUSKEYS maintains internally a table of which mouse actions
  918.          correspond to which ASCII characters and Scan Codes (this table can
  919.          be viewed with the /T Option).  MOUSKEYS does its best to make sure
  920.          that an ASCII character and a Scan Code in the table always
  921.          correspond to each other.  For example, an "A" in the ASCII
  922.          character would most likely be a "Shift-a" (42,30) in the Scan
  923.          Codes.  MOUSKEYS does this so that you only have to enter one of the
  924.          two possibilities, but can use either /S or /K.  MOUSKEYS has
  925.          several ways to try and keep the ASCII characters and Scan Codes
  926.          matched up.
  927.  
  928.          If you use a Code Word, MOUSKEYS automatically enters both the ASCII
  929.          code and the Scan Code(s) that are associated with the key. 
  930.          MOUSKEYS takes care of all the dirty work for you.
  931.  
  932.          When you enter ASCII codes ('C', "C", nnn, or @nnn), MOUSKEYS looks
  933.          up a corresponding Scan Code in a table it keeps internally.
  934.          However, there can be more than one way to enter an ASCII character
  935.          (for example, ASCII code 13 can be entered as the Enter key, the
  936.          Grey Enter key, Ctrl-m, and maybe half a dozen other ways).  Because
  937.          not all programs treat all ways the same (some programs treat Enter
  938.          very differently from Ctrl-m), the Scan Codes MOUSKEYS has in its
  939.          table may not be the ones you want to use.  If you are entering your
  940.          keys as ASCII characters, but will be using Scan Codes (/K), things
  941.          may not happen like you think they will.  Rule of thumb: if you will
  942.          be using Scan Codes (/K), enter the Scan Codes (with Code Words,
  943.          #nn, or &nn), not the ASCII characters.
  944.  
  945.          If you enter Scan Codes with #nn,nn,nn,nn, MOUSKEYS does not even
  946.          attempt to find a corresponding ASCII code.  It makes the ASCII code
  947.          a 0 (do nothing) character.  This Option is especially useful to
  948.          enter Scan Codes that do some special function, rather than generate
  949.          an ASCII code (e.g., Ctrl-Alt-Del).
  950.  
  951.          If you enter Scan Codes with &nn,nn,nn,nn, MOUSKEYS gets the
  952.          matching ASCII character by performing a "fake" KEYBOARD hardware
  953.          interrupt using the Scan Codes you gave it (just like it does with
  954.          the /K Option).  MOUSKEYS then uses whatever shows up in the
  955.          Keyboard Buffer as the ASCII character.  If more than one character
  956.          appears in the Keyboard Buffer, it only uses the first one.  If
  957.          nothing appears in the Keyboard Buffer, MOUSKEYS puts a 0 (do
  958.          nothing) in the ASCII character.
  959.  
  960.          MOUSKEYS lets you put up to four Scan Codes together to make a
  961.          single "keystroke", but only lets you use a single ASCII character.
  962.          This was done because some ASCII characters or functions (see the
  963.          Scan Code Table for enhanced keyboards below) require up to four
  964.          Scan Codes.  Most keystrokes, however, require only one or two Scan
  965.          Codes.  You can, by entering the correct Scan Codes, have MOUSKEYS
  966.          insert up to four ASCII characters per mouse action.  I wouldn't
  967.          suggest doing this, however, as is explained below in "CAVEATS".
  968.  
  969.  
  970.                         MOUSKEYS 3.04        Page 17 of 35
  971.  
  972.  
  973.  
  974.          If you enter keys from the keyboard ("?", "Ask", or "AskMe"),
  975.          MOUSKEYS keeps track of the Scan Codes as you press the keys.  As
  976.          soon as you release any key, the keyboard sends a "release" Scan
  977.          Code.  MOUSKEYS then stops looking at the Scan Codes and starts
  978.          looking at the Keyboard Buffer.  MOUSKEYS uses whatever shows up in
  979.          the Keyboard Buffer as the ASCII character.  If more than one
  980.          character appears in the Keyboard Buffer, it only uses the first
  981.          one.  If nothing appears in the Keyboard Buffer, MOUSKEYS puts a "do
  982.          nothing" in the ASCII character.  MOUSKEYS will not let you give it
  983.          more than four "push" Scan Codes before giving it a "release" Scan
  984.          Code.
  985.  
  986.  
  987.     The default characters MOUSKEYS uses are as follows: the four MOVEMENT
  988.     directions correspond to the four arrow keys (the Grey arrow keys if you
  989.     have an Enhanced keyboard), the Left BUTTON is the Enter key, the Right
  990.     BUTTON is Escape, the Left/Right BUTTON combination is F1, and the Center
  991.     BUTTON (on a 3-button mouse) is F1.  The remaining BUTTON combinations
  992.     (Center&Left, Center&Right, and Center&Left&Right) are set to 0 (to not
  993.     do anything).  The following on a single command line would give you the
  994.     same results as simply typing "MOUSKEYS":
  995.  
  996.       MOUSKEYS /Enable /StuffKeyboardBuffer /Only /ClipboardContents=""
  997.                /LengthOfDelayHorizontal=1 /LengthOfDelayVertical=3
  998.                /MoveLeft=Left /MoveRight=Right /MoveUp=Up /MoveDown=Down
  999.                /ButtonLeft=Enter /ButtonRight=Escape /ButtonCenter=F1
  1000.                /ButtonLeft&Right=F1 /ButtonCenter&Left=0
  1001.                /ButtonCenter&Right=0 /ButtonCenter&Left&Right=0
  1002.  
  1003.  
  1004.     THE MOUSKEYS ENVIRONMENT VARIABLE
  1005.     ══════════════════════════════════
  1006.     MOUSKEYS also looks for an environment variable called MOUSKEYS.  This
  1007.     variable can have any of the command line Options listed above (except /U
  1008.     or its variations).  MOUSKEYS reads the Options from the environment
  1009.     variable MOUSKEYS before it reads the Options on the DOS command line. 
  1010.     Whatever Options you have for the MOUSKEYS environment variable
  1011.     effectively become your "defaults", but are overridden by anything you
  1012.     type from the DOS command line.
  1013.  
  1014.     This could be useful, for example, if you have a particularly sensitive
  1015.     mouse.  If this were the case, you could put the line "SET MOUSKEYS=/L:5"
  1016.     in your AUTOEXEC.BAT file, which will effectively slow MOUSKEYS down
  1017.     every time you use it.  You can then just worry about changing the
  1018.     characters for each MOUSKEYS program, and don't have to worry about the
  1019.     "/L:5" every time you use MOUSKEYS - you only have to worry about it
  1020.     once.
  1021.  
  1022.     If you don't know what an Environment is, or what it is used for, I
  1023.     suggest you read about it in your favorite DOS book.
  1024.  
  1025.  
  1026.  
  1027.                         MOUSKEYS 3.04        Page 18 of 35
  1028.  
  1029.  
  1030.  
  1031.     ╔═══════════════════════════════════════════════════════════════════════╗
  1032.     ║                    CODE WORDS RECOGNIZED BY MOUSKEYS                  ║
  1033.     ╠═══════════════════════════════════════════════════════════════════════╣
  1034.     ║ Alt, LeftAlt, LftAlt, LtAlt, LAlt                                     ║
  1035.     ║ BackSpace, BackSp, BkSpace, BkSp                                      ║
  1036.     ║ Break, Brk                                    ** SEE SPECIAL NOTES ** ║
  1037.     ║ CapsLock, CapsLk, CapLock, CapLk                                      ║
  1038.     ║ Control, Ctrl, Ctl, LeftControl, LeftCtrl, LeftCtl,  LftControl,      ║
  1039.     ║    LftCtrl, LftCtl, LtControl, LtCtrl, LtCtl, LControl, LCtrl, LCtl   ║
  1040.     ║ Delete, Del                                                           ║
  1041.     ║ Down, Dn                                                              ║
  1042.     ║ End                                                                   ║
  1043.     ║ Enter, Return, Rtn, Ret                                               ║
  1044.     ║ Escape, Esc                                                           ║
  1045.     ║ F1;  F2;  F3;  F4;  F5;  F6;  F7;  F8;  F9;  F10;  F11;  F12          ║
  1046.     ║ Grey+, Gry+, G+;  Grey-, Gry-, G-;  Grey*, Gry*, G*;  Grey/, Gry/, G/ ║
  1047.     ║ Grey5, Gry5, G5                                                       ║
  1048.     ║ GreyDelete, GreyDel, GryDelete, GryDel, GDelete, GDel                 ║
  1049.     ║ GreyDown, GryDown, GDown, GreyDn, GryDn, GDn                          ║
  1050.     ║ GreyEnd, GryEnd, GEnd                                                 ║
  1051.     ║ GreyEnter, GryEnter, GEnter, GreyReturn, GreyRtn, GreyRet,            ║
  1052.     ║    GryReturn, GryRtn, GryRet, GReturn, GRtn, GRet                     ║
  1053.     ║ GreyHome, GryHome, GHome                                              ║
  1054.     ║ GreyInsert, GreyIns, GryInsert, GryIns, GInsert, GIns                 ║
  1055.     ║ GreyLeft, GreyLft, GreyLt, GryLeft, GryLft, GryLt, GLeft, GLft, GLt   ║
  1056.     ║ GreyPageDown, GreyPageDn, GreyPgDown, GreyPgDn, GryPageDown,          ║
  1057.     ║    GryPageDn, GryPgDown, GryPgDn, GPageDown, GPageDn, GPgDown, GPgDn  ║
  1058.     ║ GreyPageUp, GreyPgUp, GryPageUp, GryPgUp, GPageUp, GPgUp              ║
  1059.     ║ GreyRight, GryRight, GRight, GreyRt, GryRt, GRt                       ║
  1060.     ║ GreyUp, GryUp, GUp                                                    ║
  1061.     ║ Home                                                                  ║
  1062.     ║ Insert, Ins                                                           ║
  1063.     ║ Left, Lft, Lt                                                         ║
  1064.     ║ NumLock, NumLk                                                        ║
  1065.     ║ PageDown, PageDn, PgDown, PgDn                                        ║
  1066.     ║ PageUp, PgUp                                                          ║
  1067.     ║ Pause                                                                 ║
  1068.     ║ PrintScreen, PrintScrn, PrintScn, PrintScr, PrtScreen, PrtScrn,       ║
  1069.     ║    PrtScn, PrtScr                             ** SEE SPECIAL NOTES ** ║
  1070.     ║ Right, Rt                                                             ║
  1071.     ║ RightAlt, RtAlt, RAlt                                                 ║
  1072.     ║ RightControl, RightCtrl, RightCtl, RtControl, RtCtrl, RtCtl,          ║
  1073.     ║    RControl, RCtrl, RCtl                                              ║
  1074.     ║ RightShift, RightSft, RtShift, RtSft, RShift, RSft                    ║
  1075.     ║ ScrollLock, ScrollLk, ScrlLock, ScrlLk                                ║
  1076.     ║ Shift, Sft, LeftShift, LeftSft, LftShift, LftSft,                     ║
  1077.     ║    LtShift, LtSft, LShift, LSft                                       ║
  1078.     ║ Space                                                                 ║
  1079.     ║ SystemRequest, SystemReq, SystemRq, SysRequest, SysReq, SysRq         ║
  1080.     ║ Tab;  BackTab, BkTab                                                  ║
  1081.     ║ Up                                                                    ║
  1082.     ╚═══════════════════════════════════════════════════════════════════════╝
  1083.  
  1084.                         MOUSKEYS 3.04        Page 19 of 35
  1085.  
  1086.  
  1087.  
  1088.                                DECIMAL ASCII CODES
  1089.     ╔══╤═══════╤═════╦══╤═══╦══╤═══╦═══╤═══╦═══╤═══╦═══╤═══╦═══╤═══╦═══╤═══╗
  1090.     ║ 1│ Ctl-A │ SOH ║33│ ! ║65│ A ║ 97│ a ║129│ ü ║161│ í ║193│ ┴ ║225│ ß ║
  1091.     ║ 2│ Ctl-B │ STX ║34│ " ║66│ B ║ 98│ b ║130│ é ║162│ ó ║194│ ┬ ║226│ Γ ║
  1092.     ║ 3│ Ctl-C │ ETX ║35│ # ║67│ C ║ 99│ c ║131│ â ║163│ ú ║195│ ├ ║227│ π ║
  1093.     ║ 4│ Ctl-D │ EOT ║36│ $ ║68│ D ║100│ d ║132│ ä ║164│ ñ ║196│ ─ ║228│ Σ ║
  1094.     ║ 5│ Ctl-E │ ENQ ║37│ % ║69│ E ║101│ e ║133│ à ║165│ Ñ ║197│ ┼ ║229│ σ ║
  1095.     ║ 6│ Ctl-F │ ACK ║38│ & ║70│ F ║102│ f ║134│ å ║166│ ª ║198│ ╞ ║230│ µ ║
  1096.     ║ 7│ Ctl-G │ BEL ║39│ ' ║71│ G ║103│ g ║135│ ç ║167│ º ║199│ ╟ ║231│ τ ║
  1097.     ║ 8│ Ctl-H │ BS  ║40│ ( ║72│ H ║104│ h ║136│ ê ║168│ ¿ ║200│ ╚ ║232│ Φ ║
  1098.     ║ 9│ Ctl-I │ HT  ║41│ ) ║73│ I ║105│ i ║137│ ë ║169│ ⌐ ║201│ ╔ ║233│   ║
  1099.     ║10│ Ctl-J │ LF  ║42│ * ║74│ J ║106│ j ║138│ è ║170│ ¬ ║202│ ╩ ║234│ Ω ║
  1100.     ║11│ Ctl-K │ VT  ║43│ + ║75│ K ║107│ k ║139│ ï ║171│ ½ ║203│ ╦ ║235│ δ ║
  1101.     ║12│ Ctl-L │ FF  ║44│ , ║76│ L ║108│ l ║140│ î ║172│ ¼ ║204│ ╠ ║236│ ∞ ║
  1102.     ║13│ Ctl-M │ CR  ║45│ - ║77│ M ║109│ m ║141│ Ä ║173│ ¡ ║205│ ═ ║237│ φ ║
  1103.     ║14│ Ctl-N │ SO  ║46│ . ║78│ N ║110│ n ║142│ Ä ║174│ « ║206│ ╬ ║238│ ε ║
  1104.     ║15│ Ctl-O │ SI  ║47│ / ║79│ O ║111│ o ║143│ Å ║175│ » ║207│ ╧ ║239│ ∩ ║
  1105.     ║16│ Ctl-P │ DLE ║48│ 0 ║80│ P ║112│ p ║144│ É ║176│ ░ ║208│ ╨ ║240│ ≡ ║
  1106.     ║17│ Ctl-Q │ DC1 ║49│ 1 ║81│ Q ║113│ q ║145│ æ ║177│ ▒ ║209│ ╤ ║241│ ± ║
  1107.     ║18│ Ctl-R │ DC2 ║50│ 2 ║82│ R ║114│ r ║146│ Æ ║178│ ▓ ║210│ ╥ ║242│ ≥ ║
  1108.     ║19│ Ctl-S │ DC3 ║51│ 3 ║83│ S ║115│ s ║147│ ô ║179│ │ ║211│ ╙ ║243│ ≤ ║
  1109.     ║20│ Ctl-T │ DC4 ║52│ 4 ║84│ T ║116│ t ║148│ ö ║180│ ┤ ║212│ ╘ ║244│ ⌠ ║
  1110.     ║21│ Ctl-U │ NAK ║53│ 5 ║85│ U ║117│ u ║149│ ò ║181│ ╡ ║213│ ╒ ║245│ ⌡ ║
  1111.     ║22│ Ctl-V │ SYN ║54│ 6 ║86│ V ║118│ v ║150│ û ║182│ ╢ ║214│ ╓ ║246│ - ║
  1112.     ║23│ Ctl-W │ ETB ║55│ 7 ║87│ W ║119│ w ║151│ ù ║183│ ╖ ║215│ ╫ ║247│ ≈ ║
  1113.     ║24│ Ctl-X │ CAN ║56│ 8 ║88│ X ║120│ x ║152│ ÿ ║184│ ╕ ║216│ ╪ ║248│ Φ ║
  1114.     ║25│ Ctl-Y │ EM  ║57│ 9 ║89│ Y ║121│ y ║153│ Ö ║185│ ╣ ║217│ ┘ ║249│ ∙ ║
  1115.     ║26│ Ctl-Z │ SUB ║58│ : ║90│ Z ║122│ z ║154│ Ü ║186│ ║ ║218│ ┌ ║250│ ∙ ║
  1116.     ║27│ Ctl-[ │ ESC ║59│ ; ║91│ [ ║123│ { ║155│ ¢ ║187│ ╗ ║219│ █ ║251│   ║
  1117.     ║28│ Ctl-\ │ FS  ║60│ < ║92│ \ ║124│ | ║156│ £ ║188│ ╝ ║220│ ▀ ║252│   ║
  1118.     ║29│ Ctl-] │ GS  ║61│ = ║93│ ] ║125│ } ║157│ ¥ ║189│ ╜ ║221│ ▌ ║253│ ² ║
  1119.     ║30│ Ctl-^ │ RS  ║62│ > ║94│ ^ ║126│ ~ ║158│ ₧ ║190│ ╛ ║222│ ▐ ║254│ ■ ║
  1120.     ║31│ Ctl-_ │ US  ║63│ ? ║95│ _ ║127│   ║159│ ƒ ║191│ ┐ ║223│ ▄ ║255│   ║
  1121.     ║32│       │ SP  ║64│ @ ║96│ ` ║128│ Ç ║160│ á ║192│ └ ║224│ α ╠═══╧═══╣
  1122.     ╚══╧═══════╧═════╩══╧═══╩══╧═══╩═══╧═══╩═══╧═══╩═══╧═══╩═══╧═══╩═══════╝
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.                         MOUSKEYS 3.04        Page 20 of 35
  1142.  
  1143.  
  1144.  
  1145.                            DECIMAL EXTENDED ASCII CODES
  1146.     ╔═══╤═════════╦═══╤═══════╦═══╤═════════╦════╤═════════╦════╤═══════════╗
  1147.     ║ @3│ Ctl-@   ║@38│ Alt-L ║@73│ PgUp    ║ @94│ Ctl-F1  ║@114│ Ctl-PrtSc ║
  1148.     ║@15│ Sft-Tab ║@44│ Alt-Z ║@75│ Left    ║ @95│ Ctl-F2  ║@115│ Ctl-Left  ║
  1149.     ║@16│ Alt-Q   ║@45│ Alt-X ║@77│ Right   ║ @96│ Ctl-F3  ║@116│ Ctl-Right ║
  1150.     ║@17│ Alt-W   ║@46│ Alt-C ║@79│ End     ║ @97│ Ctl-F4  ║@117│ Ctl-End   ║
  1151.     ║@18│ Alt-E   ║@47│ Alt-V ║@80│ Down    ║ @98│ Ctl-F5  ║@118│ Ctl-PgDn  ║
  1152.     ║@19│ Alt-R   ║@48│ Alt-B ║@81│ PgDn    ║ @99│ Ctl-F6  ║@119│ Ctl-Home  ║
  1153.     ║@20│ Alt-T   ║@49│ Alt-N ║@82│ Ins     ║@100│ Ctl-F7  ║@120│ Alt-1     ║
  1154.     ║@21│ Alt-Y   ║@50│ Alt-M ║@83│ Del     ║@101│ Ctl-F8  ║@121│ Alt-2     ║
  1155.     ║@22│ Alt-U   ║@59│ F1    ║@84│ Sft-F1  ║@102│ Ctl-F9  ║@122│ Alt-3     ║
  1156.     ║@23│ Alt-I   ║@60│ F2    ║@85│ Sft-F2  ║@103│ Ctl-F10 ║@123│ Alt-4     ║
  1157.     ║@24│ Alt-O   ║@61│ F3    ║@86│ Sft-F3  ║@104│ Alt-F1  ║@124│ Alt-5     ║
  1158.     ║@25│ Alt-P   ║@62│ F4    ║@87│ Sft-F4  ║@105│ Alt-F2  ║@125│ Alt-6     ║
  1159.     ║@30│ Alt-A   ║@63│ F5    ║@88│ Sft-F5  ║@106│ Alt-F3  ║@126│ Alt-7     ║
  1160.     ║@31│ Alt-S   ║@64│ F6    ║@89│ Sft-F6  ║@107│ Alt-F4  ║@127│ Alt-8     ║
  1161.     ║@32│ Alt-D   ║@65│ F7    ║@90│ Sft-F7  ║@108│ Alt-F5  ║@128│ Alt-9     ║
  1162.     ║@33│ Alt-F   ║@66│ F8    ║@91│ Sft-F8  ║@109│ Alt-F6  ║@129│ Alt-0     ║
  1163.     ║@34│ Alt-G   ║@67│ F9    ║@92│ Sft-F9  ║@110│ Alt-F7  ║@130│ Alt--     ║
  1164.     ║@35│ Alt-H   ║@68│ F10   ║@93│ Sft-F10 ║@111│ Alt-F8  ║@131│ Alt-=     ║
  1165.     ║@36│ Alt-J   ║@71│ Home  ║   │         ║@112│ Alt-F9  ║@132│ Ctl-PgUp  ║
  1166.     ║@37│ Alt-K   ║@72│ Up    ║   │         ║@113│ Alt-F10 ║    │           ║
  1167.     ╚═══╧═════════╩═══╧═══════╩═══╧═════════╩════╧═════════╩════╧═══════════╝
  1168.  
  1169.                   DECIMAL KEYBOARD SCAN CODES (STANDARD KEYBOARD)
  1170.     ╔══╤══════╦══╤═══════╦══╤════════╦══╤════════╦══╤════════╦══╤════════╗
  1171.     ║  │      ║16│ q     ║32│ d      ║48│ b      ║64│ F6     ║80│ Down   ║
  1172.     ║ 1│ Esc  ║17│ w     ║33│ f      ║49│ n      ║65│ F7     ║81│ PgDn   ║
  1173.     ║ 2│ 1    ║18│ e     ║34│ g      ║50│ m      ║66│ F8     ║82│ Ins    ║
  1174.     ║ 3│ 2    ║19│ r     ║35│ h      ║51│ ,      ║67│ F9     ║83│ Del    ║
  1175.     ║ 4│ 3    ║20│ t     ║36│ j      ║52│ .      ║68│ F10    ║84│ SysReq ║
  1176.     ║ 5│ 4    ║21│ y     ║37│ k      ║53│ /      ║69│ NumLk  ║85│        ║
  1177.     ║ 6│ 5    ║22│ u     ║38│ l      ║54│ RShift ║70│ ScrlLk ║86│        ║
  1178.     ║ 7│ 6    ║23│ i     ║39│ ;      ║55│ Grey*  ║71│ Home   ║87│ F11    ║
  1179.     ║ 8│ 7    ║24│ o     ║40│ '      ║56│ Alt    ║72│ Up     ║88│ F12    ║
  1180.     ║ 9│ 8    ║25│ p     ║41│ `      ║57│ Space  ║73│ PgUp   ║89│        ║
  1181.     ║10│ 9    ║26│ [     ║42│ LShift ║58│ CapsLk ║74│ Grey-  ║90│        ║
  1182.     ║11│ 0    ║27│ ]     ║43│ \      ║59│ F1     ║75│ Left   ║91│        ║
  1183.     ║12│ -    ║28│ Enter ║44│ z      ║60│ F2     ║76│ Grey5  ║92│        ║
  1184.     ║13│ =    ║29│ Ctrl  ║45│ x      ║61│ F3     ║77│ Right  ║93│        ║
  1185.     ║14│ BkSp ║30│ a     ║46│ c      ║62│ F4     ║78│ Grey+  ║94│        ║
  1186.     ║15│ Tab  ║31│ s     ║47│ v      ║63│ F5     ║79│ End    ║95│        ║
  1187.     ╚══╧══════╩══╧═══════╩══╧════════╩══╧════════╩══╧════════╩══╧════════╝
  1188.                  DECIMAL KEYBOARD SCAN CODES (ENHANCED KEYBOARD)
  1189.     ╔═════════════╤════════════╦══════╤═══════════╦════════╤════════════╗
  1190.     ║224,28       │ GreyEnter  ║224,71│ GreyHome  ║224,80  │ GreyDown   ║
  1191.     ║224,29       │ RightCtrl  ║224,72│ GreyUp    ║224,81  │ GreyPgDn   ║
  1192.     ║224,42,224,55│ PrtScr     ║224,73│ GreyPgUp  ║224,82  │ GreyIns    ║
  1193.     ║224,53       │ Grey/      ║224,75│ GreyLeft  ║224,83  │ GreyDel    ║
  1194.     ║224,56       │ RightAlt   ║224,77│ GreyRight ║(Alt),84│ Alt-SysReq ║
  1195.     ║(Ctrl),224,70│ Ctrl-Break ║224,79│ GreyEnd   ║225,29  │ Pause      ║
  1196.     ╚═════════════╧════════════╩══════╧═══════════╩════════╧════════════╝
  1197.  
  1198.                         MOUSKEYS 3.04        Page 21 of 35
  1199.  
  1200.  
  1201.  
  1202.     MOUSKEYS AND THE MOUSE CURSOR
  1203.     ═════════════════════════════
  1204.     When you enter a * as one (or more) of the button characters (for
  1205.     example, MOUSKEYS /BL:*), MOUSKEYS has a radical personality change.
  1206.     First of all, mouse movements no longer cause MOUSKEYS to type keystrokes
  1207.     from the keyboard.  Instead, mouse movements control the Mouse Cursor. 
  1208.     The Mouse Cursor is usually a box or an arrow, in a color different than
  1209.     the rest of the screen, that follows the mouse around the screen.  If you
  1210.     use a mouse very much, you've probably seen the Mouse Cursor many times
  1211.     before and know exactly what I'm talking about.
  1212.  
  1213.     When you tell MOUSKEYS to use the Mouse Cursor with a *, you are telling
  1214.     MOUSKEYS to be one of three things: a Menu Picker, a Cursor Mover, and/or
  1215.     a Clipboard.  When using MOUSKEYS as a Menu Picker, MOUSKEYS assumes you
  1216.     are in a program with menus somewhere on the screen, and that you can
  1217.     pick the menu items with a number or a letter from the keyboard.  Based
  1218.     on where the Mouse Cursor is when you press and release the * button,
  1219.     MOUSKEYS looks at the screen immediately surrounding the Mouse Cursor and
  1220.     guesses which character(s) you want MOUSKEYS to "type".  MOUSKEYS goes
  1221.     through a pretty sophisticated process to guess which character(s) to
  1222.     type.  This process is discussed below under "MOUSKEYS AND MENUS".
  1223.  
  1224.     You can also have MOUSKEYS be a Menu Picker, but instead of having it
  1225.     guess which character you want it to use by looking at the screen, you
  1226.     can tell it exactly which character you want to use.  You do this by
  1227.     putting the Mouse Cursor directly over the character you want to MOUSKEYS
  1228.     to use, press a Shift key on the keyboard, then press and release a *
  1229.     mouse button.  Note that the /A and /O modes are still in effect (if the
  1230.     /A mode is selected, MOUSKEYS will type the character you are pointing at
  1231.     and then type an <Enter> key).
  1232.  
  1233.  
  1234.     To use MOUSKEYS as a Cursor Mover, you tell MOUSKEYS where you would like
  1235.     the Text Cursor to be (the Text Cursor is the flashing line or box that
  1236.     shows you where the text gets entered when you type on the keyboard).  To
  1237.     have MOUSKEYS move the Text Cursor, you put the Mouse Cursor where you
  1238.     would like the Text Cursor to be.  You then press the Ctrl and Alt keys
  1239.     at the same time, then press and release a * button, and then release the
  1240.     Ctrl and Alt keys (Ctrl-Alt-*Btn).  When you do this, MOUSKEYS will start
  1241.     "typing" up/down and left/right arrow keys, trying to get the Text Cursor
  1242.     to end up underneath the Mouse Cursor.
  1243.  
  1244.     Using MOUSKEYS as a Cursor Mover is a very handy feature for certain
  1245.     programs, but does have limitations.  First of all, MOUSKEYS only "types"
  1246.     arrow keys to try and move the Text Cursor.  MOUSKEYS will not type Tab,
  1247.     PgUp, etc. that some programs (for example, certain databases and
  1248.     spreadsheets) need to move the Text Cursor around the screen.  Using
  1249.     MOUSKEYS in a program that doesn't use arrow keys to move the Text Cursor
  1250.     can have unpredictable results.
  1251.  
  1252.  
  1253.  
  1254.  
  1255.                         MOUSKEYS 3.04        Page 22 of 35
  1256.  
  1257.  
  1258.  
  1259.     Also, with some programs, there are certain parts of the screen where the
  1260.     Text Cursor cannot go (sometimes there is a menu line somewhere on the
  1261.     screen, or in a Word Processor sometimes you cannot have the cursor go
  1262.     past the last character on a line).  If you put the Mouse Cursor into one
  1263.     of these "forbidden" areas on the screen and tell MOUSKEYS to try and
  1264.     move the Text Cursor there (with a Ctrl-Alt-*Btn), MOUSKEYS will, of
  1265.     course, fail.  Exactly where the Text Cursor ends up may or may not even
  1266.     be close to where you wanted it to be.  Be sure to tell MOUSKEYS to move
  1267.     the Text Cursor to somewhere where the Cursor can, in fact, go.
  1268.  
  1269.     Also, in some programs, typing a single arrow key can move the Text
  1270.     Cursor more than one space in a particular direction (for example, if you
  1271.     have double-spacing turned on in a Word processor, typing a down arrow
  1272.     moves the Cursor down two lines on the screen, not just one).  MOUSKEYS
  1273.     counts the number of spaces (or lines) between where the Cursor is and
  1274.     where you want it to be, and "types" the number of arrows it thinks it
  1275.     will take to move it.  MOUSKEYS assumes an arrow key will move the Cursor
  1276.     one space or one line.  If this is not true, MOUSKEYS will probably not
  1277.     move the Cursor correctly.
  1278.  
  1279.  
  1280.     When using MOUSKEYS as a Clipboard, you are able to select text from the
  1281.     screen using the Mouse Cursor, and copy it into the Clipboard.  You can
  1282.     then have MOUSKEYS "type" the text stored in the Clipboard just as if you
  1283.     were typing it from the keyboard.  This works similar to the Copy/Paste
  1284.     functions built into many types of programs these days, like Windows, 
  1285.     which also have a Clipboard.
  1286.  
  1287.     When you press a * button, nothing appears to happen right away.  If you
  1288.     release the * button without having moved the Mouse Cursor, MOUSKEYS
  1289.     becomes a Menu Picker.  MOUSKEYS assumes you are pointing at a menu item,
  1290.     and looks at the screen immediately surrounding the Mouse Cursor to find
  1291.     character(s) to "type" (or simply uses the character directly under the
  1292.     Mouse Cursor if a Shift key is pressed).  If MOUSKEYS is unable to find
  1293.     anything it thinks is a menu item, it beeps at you (what MOUSKEYS thinks
  1294.     is a menu item is discussed below under "MOUSKEYS AND MENUS").
  1295.  
  1296.     If you move the Mouse Cursor after pressing the * button, MOUSKEYS will
  1297.     start marking the screen.  MOUSKEYS will keep marking the screen until
  1298.     you release the * button.  As soon as you release the * button, whatever
  1299.     you have marked on the screen is copied into the Clipboard, and the
  1300.     screen is unmarked.  If there was anything in the Clipboard left from a
  1301.     previous copy, it is overwritten with the new copy information.  MOUSKEYS
  1302.     will keep whatever it has in the Clipboard until it is replaced by new
  1303.     copy information or until MOUSKEYS is removed from memory (with a
  1304.     MOUSKEYS /U).  Even a MOUSKEYS /E, which normally Resets everything, does
  1305.     not reset the Clipboard.
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.                         MOUSKEYS 3.04        Page 23 of 35
  1313.  
  1314.  
  1315.  
  1316.     While MOUSKEYS is marking the screen for characters to put into the
  1317.     Clipboard, MOUSKEYS assumes that the screen is completely static (not
  1318.     changing).  If, for some reason, the screen is scrolling up or down or
  1319.     you are typing extra stuff on the keyboard while MOUSKEYS is trying to
  1320.     mark the screen, the "marking", "unmarking", and "copying" that MOUSKEYS
  1321.     is doing will probably get really screwed up.  The bottom line is to make
  1322.     sure that what you want to copy into the clipboard is completely on
  1323.     screen before you start marking, and that you don't do anything to change
  1324.     what is on the screen during the "marking" and "unmarking".
  1325.  
  1326.     You must copy at least two characters into the Clipboard.  If you start
  1327.     marking the screen with the Mouse Cursor, and then bring the Mouse Cursor
  1328.     back to where you started, and then release the * button (effectively
  1329.     only "marking" one character), MOUSKEYS assumes you changed your mind
  1330.     about using the Clipboard and beeps at you.  Also, the Clipboard is
  1331.     limited in size (500 characters, or 1/4 of a standard 25 row by 80 column
  1332.     screen).  If you try to copy more than 500 characters from the screen
  1333.     into the Clipboard, MOUSKEYS will beep at you.
  1334.  
  1335.     To have MOUSKEYS "type" the contents of the Clipboard, you must hold the
  1336.     Ctrl key down on the keyboard, press and release a * mouse button, and
  1337.     then release the Ctrl key (Ctrl-*Btn).  If the Mouse Cursor moves between
  1338.     the press and the release, MOUSKEYS beeps at you.
  1339.  
  1340.     When you tell MOUSKEYS to type from the Clipboard, it is very important
  1341.     to keep in mind that there are two cursors on the screen - the Text
  1342.     Cursor and the Mouse Cursor.  When MOUSKEYS starts typing from the
  1343.     Clipboard, your program will think you are typing text at the Text
  1344.     Cursor.  MOUSKEYS really doesn't care where the Text Cursor is at the
  1345.     time, and the program doesn't even know that the Mouse Cursor exists. 
  1346.     MOUSKEYS just starts typing.  You need to make sure the Text Cursor is
  1347.     where you want it BEFORE you do a Ctrl-*Btn (you can move the Text Cursor
  1348.     with a Ctrl-Alt-*Btn).
  1349.  
  1350.     Even though you can have more than one * button, there is only one
  1351.     Clipboard.  It doesn't matter which * button you press and release - to
  1352.     MOUSKEYS they're all the same.
  1353.  
  1354.     Whether MOUSKEYS is being used as a Menu Picker, Cursor Mover, or
  1355.     Clipboard, MOUSKEYS is trying to get character information from the
  1356.     screen.  MOUSKEYS can only do this in a program that is in a "text"
  1357.     screen mode.  If a program is in a "graphics" mode, the screen is stored
  1358.     as a bunch of colored dots, called pixels (a simple 320x200 CGA graphics
  1359.     screen is stored as 64,000 dots, or pixels).  MOUSKEYS cannot reliably
  1360.     get character information from a screen that is stored as dots.  A screen
  1361.     in a "text" mode is stored as a series of characters (a standard 25x80
  1362.     text screen is stored as 2,000 characters).  MOUSKEYS can look at the
  1363.     characters on a "text" screen, and make an educated guess about what
  1364.     keystroke corresponds to a menu item, can move the Text Cursor around the
  1365.     screen, or can "mark" characters on the screen and copy the characters
  1366.     from the screen into the Clipboard.
  1367.  
  1368.  
  1369.                         MOUSKEYS 3.04        Page 24 of 35
  1370.  
  1371.  
  1372.  
  1373.     Because of this, MOUSKEYS only turns on the Mouse Cursor when the screen
  1374.     is in a "text" mode (and one or more of the buttons is a *).  If one or
  1375.     more of the buttons is a *, and the screen is in a "graphics" mode,
  1376.     MOUSKEYS does not do anything when the mouse is moved or a * button is
  1377.     pressed.  As soon as the screen returns to a "text" mode, the Mouse
  1378.     Cursor is restored and the * button starts looking for menu items again.
  1379.  
  1380.     Another consequence of MOUSKEYS using screen information for a * button
  1381.     is that MOUSKEYS is only able to STUFF the Keyboard Buffer with ASCII
  1382.     codes when using the * button.  What is stored on a screen is ASCII
  1383.     codes, and MOUSKEYS has no way of telling what Scan Codes to use to
  1384.     "type" the character.  There is a rather lengthy discussion of this above
  1385.     under "COMMAND LINE OPTIONS", but it boils down to the fact that there is
  1386.     more that one way to enter almost any ASCII code (for example, 'A' could
  1387.     be entered as Shift-a, CapsLk-a, Alt-65, and who knows how many other
  1388.     ways).
  1389.  
  1390.     Since a mouse has at least two buttons, there are at least three button
  1391.     combinations you can have MOUSKEYS deal with (Left, Right, and both
  1392.     buttons at the same time).  Even though MOUSKEYS can only use ASCII codes
  1393.     with the button designated as a *, the other button combinations do not
  1394.     have to use only ASCII codes.  For example, if you do a
  1395.     "MOUSKEYS/BL:*/BR:'r'/K", the left mouse button acts as a Menu Picker and
  1396.     gets ASCII codes from the screen, but the right button simulates KEYBOARD
  1397.     hardware interrupts with an 'r'.  As long as you have at least one button
  1398.     designated as a Menu Picker, the mouse movements only control the Mouse
  1399.     Cursor, and any characters you have for mouse movements (MOUSKEYS
  1400.     /MoveLeft:'L', for example) are ignored.
  1401.  
  1402.     It is also important (at least from my perspective) that you know that
  1403.     the Mouse Cursor is generated by the Mouse Driver (MOUSE.COM, MOUSE.EXE,
  1404.     or MOUSE.SYS), not by MOUSKEYS.  MOUSKEYS simply tells the Mouse Driver
  1405.     whether the Mouse Cursor should be turned on or not.  I tell you this
  1406.     because sometimes the mouse leaves behind Mouse Droppings (yes, that's
  1407.     what they're called), which are little scattered remnants of where the
  1408.     mouse has been when the Mouse Cursor is turned on and something changes
  1409.     on the screen.  If you've never seen Mouse Droppings before, you will. 
  1410.     Anyway, the point is to let you know that Mouse Droppings are caused by
  1411.     the Mouse Driver, not by MOUSKEYS.
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.                         MOUSKEYS 3.04        Page 25 of 35
  1427.  
  1428.  
  1429.  
  1430.     MOUSKEYS AND MENUS
  1431.     ══════════════════
  1432.     If you press and release a * mouse button while the Mouse Cursor is
  1433.     turned on, MOUSKEYS is used as a Menu Picker.  This means that MOUSKEYS
  1434.     assumes you are pointing at a pull-down or pop-up menu somewhere on the
  1435.     screen, and that you can type a number or letter from the keyboard to
  1436.     pick one of the menu items.  Typical menus might look like the following:
  1437.  
  1438.          ┌───────────────────────┐   F1 Help  F2 File  F3 Exit
  1439.          │ 1. Get file           │   Do you want to continue (Y/N)?
  1440.          │ 2. Save File          │   Press <─┘ to continue.
  1441.          │ 3. Delete file        │   <B>egin  <E>nd
  1442.          │ 4. Insert file        │   [01] Start  [02] End
  1443.          │ 5. Print working copy │   [DOS]    [WP]    [123]    [WIN]
  1444.          │ 6. Erase working copy │
  1445.          │ 7. Use macros         │
  1446.          └───────────────────────┘
  1447.  
  1448.     I have looked at the menus of several programs to determine the following
  1449.     approach, but it does not always work correctly with every program.
  1450.  
  1451.     First of all, MOUSKEYS looks directly under the Mouse Cursor to see if
  1452.     the screen looks like a function key (a character that is not a number or
  1453.     a letter, followed by a capital F, followed immediately by a number
  1454.     between 1 and 12).  MOUSKEYS also looks for modifiers in front of the F,
  1455.     such as Sft-, Ctrl-, etc. that may indicate a "shifted" function key.  If
  1456.     MOUSKEYS sees something that looks like a Function key, it STUFFs the
  1457.     appropriate ASCII character into the Keyboard Buffer.
  1458.  
  1459.     If a function key is not directly under the cursor, MOUSKEYS looks
  1460.     directly under the cursor to see if it is pointing at a 'Y/N', 'YES/NO',
  1461.     or 'YES OR NO'.  If it is, and the Mouse Cursor is over a part of the
  1462.     words 'YES' or 'NO', MOUSKEYS types a 'Y' or an 'N', as appropriate.  If
  1463.     the /A mode is selected, MOUSKEYS will type an <Enter> key after typing
  1464.     the Y or N.
  1465.  
  1466.     If neither of these is the case, MOUSKEYS then looks directly under the
  1467.     Mouse Cursor for the words Enter, Return, CR, <─┘, Space, Esc, Escape,
  1468.     Home, End, Ins, Del, PgUp, PgDn, or anything that looks like a direction
  1469.     arrow.  If MOUSKEYS sees one of these words (or arrows), it STUFFs the
  1470.     appropriate ASCII character into the Keyboard Buffer.
  1471.  
  1472.     If none of these words is found, MOUSKEYS then looks at the word under
  1473.     the Mouse Cursor to see if it has 1 character (a letter or a number) that
  1474.     is different than the rest of the characters in the word.  The character
  1475.     can be different in that it either is surrounded by characters that are
  1476.     not letters or numbers (for example, <B>egin), or can be in a different
  1477.     color than the rest of the characters in the word.  The word must be at
  1478.     least three characters long, or MOUSKEYS will not bother trying to test
  1479.     it.  If MOUSKEYS sees a character that is different, MOUSKEYS STUFFs the
  1480.     character into the Keyboard Buffer.  If the /A mode is selected, MOUSKEYS
  1481.     types an <Enter> key after typing the appropriate character.
  1482.  
  1483.                         MOUSKEYS 3.04        Page 26 of 35
  1484.  
  1485.  
  1486.  
  1487.     If None of these tests work, MOUSKEYS then assumes you are actually in
  1488.     the middle of a pull-down menu box, which has some sort of border around
  1489.     it.  MOUSKEYS goes backward from the Mouse Cursor until it finds the left
  1490.     edge of the menu border (an "edge-of-Box" character - '│', '║', or '|',
  1491.     or two spaces in a row).  MOUSKEYS then goes forward until it finds a
  1492.     function key, capital letter, or number that is set apart from the
  1493.     remaining characters (not surrounded by other capital letters or
  1494.     numbers), or until it reaches the other side of the menu border (another
  1495.     "edge-of-Box" character or four spaces in a row).  If MOUSKEYS finds a
  1496.     function key, capital letter, or single-digit number, it types it.  If
  1497.     the /A mode is selected, and the character typed was a letter or a number
  1498.     (not a function key), MOUSKEYS then types an <Enter> key.  If MOUSKEYS
  1499.     finds a multiple-digit number (e.g., 01, 99, or 123456), MOUSKEYS types
  1500.     the number and then types an <Enter> key.
  1501.  
  1502.     If MOUSKEYS cannot find a menu item inside a box, but the mouse cursor is
  1503.     on top of a word on the screen (a "word" in this case is a series of
  1504.     letters and/or numbers), MOUSKEYS "types" the entire word followed by the
  1505.     Enter key.
  1506.  
  1507.     If none of these tests work, MOUSKEYS is confused and beeps at you.
  1508.  
  1509.     I think MOUSKEYS does a pretty good job of finding menu items on the
  1510.     screen, but there are ways you can help it be better.  As a rule, the
  1511.     closer the Mouse Cursor is to the actual character or word on the screen
  1512.     you want MOUSKEYS to use, the better MOUSKEYS will work.  In the example
  1513.     menu shown above, for instance, let's say you wanted to pick item #4,
  1514.     "Insert File".  You want MOUSKEYS to type a 4.  MOUSKEYS would find the 4
  1515.     as long as you had the Mouse Cursor inside the menu box, anywhere past
  1516.     the left side of the box, and no more than four spaces past the end of
  1517.     the words "Insert File".  Of course, the closer you had the Mouse Cursor
  1518.     to the 4 on the screen, the faster MOUSKEYS could figure out that you
  1519.     want it to type a 4.
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.                         MOUSKEYS 3.04        Page 27 of 35
  1541.  
  1542.  
  1543.  
  1544.     CHANGING MODES ON THE FLY
  1545.     ═════════════════════════
  1546.     There are special things MOUSKEYS can do when you have the Ctrl, Alt,
  1547.     and/or Shift keys pressed on the keyboard at the same time you press and
  1548.     release one of the mouse buttons.
  1549.  
  1550.     If you have one of the mouse buttons designated as a Menu Picker (for
  1551.     example, 'MOUSKEYS /BL:*' designates the left mouse button as a Menu
  1552.     Picker), and you hold down the one of the Shift keys while you press and
  1553.     release the Menu Picker button, MOUSKEYS types the character that is
  1554.     directly under the Mouse Cursor.  It bypasses the normal menu routine it
  1555.     goes through to "guess" which character you want it to type.  This is
  1556.     discussed in more detail in the above section, "MOUSKEYS AND THE MOUSE
  1557.     CURSOR".
  1558.  
  1559.     If you have one of the mouse keys designated as a Menu Picker, and you
  1560.     hold down a Ctrl key while you press and release a * button, MOUSKEYS
  1561.     "types" whatever is in the Clipboard.  This is also discussed in the
  1562.     above section, "MOUSKEYS AND THE MOUSE CURSOR" (as is a discussion on how
  1563.     to copy information from the screen into the Clipboard).
  1564.  
  1565.     If you have both the Ctrl and Alt keys pressed while you press and
  1566.     release a * button (Ctrl-Alt-*Btn), MOUSKEYS tries to move the Text
  1567.     Cursor so that it ends up underneath the Mouse Cursor.  There is a
  1568.     detailed description of how this works in the section above, "MOUSKEYS
  1569.     AND THE MOUSE CURSOR".
  1570.  
  1571.     You can use the Alt key on the keyboard to have MOUSKEYS toggle a mouse
  1572.     button between being a Menu Picker and being a regular MOUSKEYS button
  1573.     (where you tell MOUSKEYS exactly what character you want the button to
  1574.     type).  If a button is currently designated as a * button, and you press
  1575.     an Alt key while pressing and releasing the * button, the button changes
  1576.     from being a * button to being a regular button.  The reverse is also
  1577.     true.  If a button is designated as a regular button, and you press and
  1578.     release the mouse button while an Alt key is pressed, the button changes
  1579.     from a regular button to a * button.
  1580.  
  1581.     To keep you aware of what's going on while changing button functions with
  1582.     the Alt key, MOUSKEYS uses the speaker.  When you change a button from a
  1583.     regular button to a * button with an Alt key, MOUSKEYS beeps with a HIGH
  1584.     pitch (to indicate that you are turning the Menu Picker ON).  If there
  1585.     was already another button designated as a * button when you did this,
  1586.     MOUSKEYS beeps once.  If this button becomes the first * button (which
  1587.     will turn ON the Mouse Cursor), MOUSKEYS beeps twice.
  1588.  
  1589.     The reverse is also true.  If you change a * button to a regular button
  1590.     with an Alt Key, MOUSKEYS beeps with a LOW pitch (to indicate that you
  1591.     are turning the Menu Picker OFF).  If there is still another * button
  1592.     designated on the mouse, MOUSKEYS will only beep once.  If this was the
  1593.     only * button (and changing it to a regular button turns the Mouse Cursor
  1594.     OFF), MOUSKEYS beeps twice.
  1595.  
  1596.  
  1597.                         MOUSKEYS 3.04        Page 28 of 35
  1598.  
  1599.  
  1600.  
  1601.     THE MICROSOFT MOUSE DRIVER
  1602.     ══════════════════════════
  1603.     My opinion: Microsoft did a lousy job of designing both its Mouse Driver
  1604.     and Microsoft Windows.  There is a description of some of the problems
  1605.     related to the interaction of these two programs under the "MOUSKEYS /R"
  1606.     Option above, which I won't go over again.  But there is also another
  1607.     issue related more specifically to the Microsoft Mouse Driver (and all
  1608.     mice which emulate the Microsoft Mouse Driver, because they have to do
  1609.     exactly what Microsoft does to be compatible).
  1610.  
  1611.     When a program wants to use a mouse, the first thing it does is ask the
  1612.     Mouse Driver if there is a mouse installed.  If the mouse isn't
  1613.     installed, nothing happens.  If the mouse is installed, the Mouse Driver
  1614.     tells the calling program about it.  Unfortunately, no matter how nicely
  1615.     you ask it, the Mouse Driver also does something else - it Resets itself. 
  1616.     The Mouse Driver effectively loses its brains and memories of everything
  1617.     that went on before that time.
  1618.  
  1619.     The fact that the Mouse Driver loses its brains during Resets causes
  1620.     problems with MOUSKEYS, and any other programs (especially TSR's) that
  1621.     have to deal with mice.  Let's say you install MOUSKEYS in your
  1622.     AUTOEXEC.BAT file, and leave it ENABLEd - you like to use your mouse at
  1623.     the DOS command line (this can be handy, especially if you use CED,
  1624.     DOSKEY, or some other DOS command line editor).  You start up a program
  1625.     (let's call it Program) that uses a mouse.  When you start Program, it
  1626.     asks the Mouse Driver if the mouse is installed.  As soon as this
  1627.     happens, the Mouse Driver resets itself and loses all memories it had of
  1628.     MOUSKEYS even existing.
  1629.  
  1630.     You're in Program for awhile, and then quit back out to DOS.  You can't
  1631.     use MOUSKEYS any more because the Mouse Driver forgot MOUSKEYS was there. 
  1632.     MOUSKEYS has a way to handle this situation, but it upsets me a more than
  1633.     a little that there is even a situation to handle.
  1634.  
  1635.     Every time you type MOUSKEYS [options] at the DOS prompt, MOUSKEYS
  1636.     reminds the Mouse Driver that it's there.  In the above situation, after
  1637.     you quit Program, typing "MOUSKEYS" at the DOS prompt will "reinstall"
  1638.     MOUSKEYS by reminding the Mouse Driver that it's there (or better yet,
  1639.     create a Program.BAT batch file to start Program, and put a "MOUSKEYS"
  1640.     line at the END of the batch file;  when you quit Program, MOUSKEYS will
  1641.     remind the Mouse Driver that it is there).
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.                         MOUSKEYS 3.04        Page 29 of 35
  1655.  
  1656.  
  1657.  
  1658.     CAVEATS
  1659.     ═══════
  1660.     If MOUSKEYS isn't working with a program that you think it should be,
  1661.     there are several possible reasons:
  1662.  
  1663.       1.  MOUSKEYS has been DISABLEd (with MOUSKEYS /D).
  1664.       2.  MOUSKEYS is STUFFing the Keyboard Buffer with ASCII codes (MOUSKEYS
  1665.           /S), when it should be simulating KEYBOARD hardware interrupts
  1666.           (MOUSKEYS /K), or vice versa.
  1667.       3.  The ASCII characters and/or Scan Codes MOUSKEYS is using aren't
  1668.           what the program expects to see.
  1669.       4.  The Mouse Driver (MOUSE.COM, MOUSE.EXE, or MOUSE.SYS) has been
  1670.           reset and doesn't know MOUSKEYS is there any more.
  1671.       5.  The Mouse Hardware needs to be Reset (for details, see the
  1672.           description under the "MOUSKEYS /R" Option above).
  1673.       6.  In Menu Picker mode, the program is in a "graphics" screen mode
  1674.           (MOUSKEYS needs a "text" screen mode to be a Menu Picker).
  1675.       7.  In Menu Picker mode, MOUSKEYS is unable to determine the correct
  1676.           character(s) it should type.
  1677.       8.  In Menu Picker mode, the /O option is selected when you really want
  1678.           the /A option, or vice versa.  These options determine whether or
  1679.           not MOUSKEYS types an <Enter> key after picking from a menu.  See
  1680.           the descriptions above for details.
  1681.  
  1682.     Typing MOUSKEYS /T should resolve most situations.  MOUSKEYS /T will show
  1683.     you whether MOUSKEYS is ENABLEd or DISABLEd, whether it is in /S or /K
  1684.     mode, whether it is in /A or /O mode, what the ASCII characters and Scan
  1685.     Codes are, and will also remind the Mouse Driver of its existence. 
  1686.     MOUSKEYS /T should be your main troubleshooting tool.
  1687.  
  1688.     When using the KEYBOARD interrupt Option (MOUSKEYS /K), be careful.  The
  1689.     method MOUSKEYS uses to "fake" the computer into accepting a Scan Code
  1690.     doesn't always work, and can take a long time (in computer terms) to do.
  1691.     When it doesn't work, it will almost always crash the computer - you will
  1692.     have to reboot.
  1693.  
  1694.     In addition, when using the KEYBOARD interrupt Option (MOUSKEYS /K),
  1695.     MOUSKEYS may not send Scan Codes the way you think it does.  When
  1696.     MOUSKEYS is processing the Scan Codes for a particular mouse action, it
  1697.     first goes through the four "push" Scan Codes, one by one, and inserts
  1698.     them.  Then, it goes through the same Scan Codes, in the same order, and
  1699.     inserts the four "release" Scan Codes.  If you are having a problem with
  1700.     MOUSKEYS not sending Scan Codes the way you think it is, it could be
  1701.     because the "pushes" and "releases" are in the same order.  I can't think
  1702.     of a situation where this would be a problem, but it is possible.
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.                         MOUSKEYS 3.04        Page 30 of 35
  1712.  
  1713.  
  1714.  
  1715.     If you are entering Scan Codes with &nn,nn,nn,nn, do NOT enter
  1716.     Ctrl-Alt-Del with &29,56,83.  This will cause MOUSKEYS to send a
  1717.     Ctrl-Alt-Del to your computer while you are trying to telling MOUSKEYS
  1718.     that you want it to use Ctrl-Alt-Del, and your computer will crash and
  1719.     burn.  If you want, for some obscure reason, to have one of your mouse
  1720.     buttons do a Ctrl-Alt-Del, you need to enter it with #29,56,83 or use the
  1721.     Ctrl-Alt-Del Code Word combination.  Do not enter &29,56,83.
  1722.  
  1723.     When entering Scan Codes with ? (or Ask or AskMe), there are two
  1724.     "special" keyboard sequences that MOUSKEYS cannot handle correctly.  They
  1725.     are Ctrl-Alt-Del and Pause.  If you want your mouse to do a Ctrl-Alt-Del,
  1726.     enter it with "#29,56,83" or "Ctrl-Alt-Del".  If you want to do a Pause,
  1727.     enter it with "#225,29" or "Pause".
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.                         MOUSKEYS 3.04        Page 31 of 35
  1769.  
  1770.  
  1771.  
  1772.     WHY I WROTE MOUSKEYS THE WAY I DID
  1773.     ══════════════════════════════════
  1774.     In case you haven't been able to tell yet, I use DOS all the time, and I
  1775.     write batch files to automate almost everything I do.  My computer at
  1776.     home isn't very fast, doesn't have a very big hard drive, and doesn't
  1777.     have very much memory - those things cost more money than I am able to
  1778.     spend.  I don't run Windows unless there's no other choice, and even then
  1779.     only under protest.  I also don't use programs with fancy graphics
  1780.     screens when text screen programs will do.  Most of the time, graphics
  1781.     don't provide any real functional benefit, and just slow things down
  1782.     enough that you believe you have to spend more money and upgrade your
  1783.     hardware.
  1784.  
  1785.     I realize I am being passed by in the latest Microsoft Windows rage, but
  1786.     I can still do everything I need to do by using DOS and DOS programs. 
  1787.     That could change in the future, but it is still true today.  I wrote
  1788.     MOUSKEYS in a way that is very useful for the way I do things on my PC,
  1789.     and, I suspect, the way many other people do things as well.
  1790.  
  1791.     I wrote MOUSKEYS with the intent that it would be used mainly in Batch
  1792.     files, so that MOUSKEYS will be automatically loaded each time you want
  1793.     to use a mouse.  The other choice was to make MOUSKEYS with a hot-key
  1794.     sensor.  When you pushed the hot-key, a window would pop up and let you
  1795.     change the things you can change now with the MOUSKEYS Options (/L:nn,
  1796.     /E, etc.).  The problem I had with this choice was two-fold.
  1797.  
  1798.     First of all, a hot-key program isn't always able to pop up a window.  If
  1799.     you're running any kind of graphics program, or even some text programs
  1800.     (depending on how they're written), the computer simply will not let you
  1801.     pop a window onto the screen.
  1802.  
  1803.     The biggest reason for writing it as I did, however, is because of
  1804.     memory.  Writing MOUSKEYS as a hot-key program would take up a lot more
  1805.     RAM.  MOUSKEYS uses about 6K of RAM, but a hot-key option would easily
  1806.     take that up to at least 10K.  I also wrote MOUSKEYS entirely in Assembly
  1807.     Language, and took special pains to make MOUSKEYS as small and fast as I
  1808.     know how to make it.  On my PC, RAM is the most precious asset I have.
  1809.  
  1810.     There are a couple of disadvantages in writing MOUSKEYS this way,
  1811.     however.  First of all, to change Options, even after it is installed in
  1812.     memory, you need the executable file MOUSKEYS.COM to be accessible (on
  1813.     your hard drive or on one of your floppies).  If you have a hard drive,
  1814.     you can put MOUSKEYS in a directory that is in your PATH.  If you don't
  1815.     have a hard drive, you will need a copy of MOUSKEYS.COM on one of the
  1816.     floppies that you use to start your program.
  1817.  
  1818.     The other disadvantage is that MOUSKEYS can be a little bit overwhelming
  1819.     to use.  It is powerful, and it has a lot of Options to pick from.  Once
  1820.     you figure out how to use it with a particular program the first time,
  1821.     however, writing a batch file will automate the process for you.  You
  1822.     should only have to do the "hard part" once.
  1823.  
  1824.  
  1825.                         MOUSKEYS 3.04        Page 32 of 35
  1826.  
  1827.  
  1828.  
  1829.     A WORD FROM THE SPONSOR
  1830.     ═══════════════════════
  1831.     MOUSKEYS is a free program.  If you like it and use it, do something nice
  1832.     for someone else in return.  I will accept niceties to myself in the form
  1833.     of $.  I have never seen a program quite like MOUSKEYS anywhere on the
  1834.     market.
  1835.  
  1836.     You can freely copy and distribute MOUSKEYS.COM, as long as it is
  1837.     distributed along with this MOUSKEYS.DOC, and neither file has been
  1838.     modified in any way.  You cannot charge anyone in any way for MOUSKEYS,
  1839.     except to recover your actual costs for disks and shipping (you cannot
  1840.     charge for "handling").  You do need my permission to distribute MOUSKEYS
  1841.     as a "companion" to some other program.
  1842.  
  1843.  
  1844.     OTHER PROGRAMS
  1845.     ══════════════
  1846.     If you like MOUSKEYS, I have written some other programs you may find
  1847.     useful.
  1848.  
  1849.       CLOCK
  1850.           Shows a clock on your screen all the time.  Also has two alarms
  1851.           that beep at you when it's time for an appointment.
  1852.  
  1853.       JOYKEYS
  1854.           Lets you use your joystick(s) with any program.
  1855.  
  1856.       PRTSCR
  1857.           Sends all of your PrintScreens to a file instead of a printer.  A
  1858.           good way to transfer data between two programs, even if they won't
  1859.           normally "talk" to each other.
  1860.  
  1861.       PRTSCRFF
  1862.           Modifies your PrintScreen so that each new PrintScreen gets put on
  1863.           a new sheet of paper (especially useful if you have a Laser
  1864.           printer).
  1865.  
  1866.       SCANCODE
  1867.           Lets you simulate keystrokes from batch files.  Helpful in getting
  1868.           past the "starting screens" of most programs.
  1869.  
  1870.       SERIAL
  1871.           Shows the status of your serial (COM) ports on screen.  Shows the
  1872.           bit rate, parity, status of the leads (DTR, DSR, etc.).  An
  1873.           excellent way to troubleshoot modem problems.
  1874.  
  1875.       SLOWDOWN
  1876.           Slows down a fast computer so you can run older programs that
  1877.           require a PC/XT or PC/AT.
  1878.  
  1879.  
  1880.  
  1881.  
  1882.                         MOUSKEYS 3.04        Page 33 of 35
  1883.  
  1884.  
  1885.  
  1886.     WARRANTY
  1887.     ════════
  1888.     There is no warranty of any kind, either expressed or implied, supplied
  1889.     with MOUSKEYS.  As with any software, especially TSR's, it may or may not
  1890.     work with other software that you may have.  I have done my best to make
  1891.     sure MOUSKEYS won't screw anything up, but, again, there is no guarantee.
  1892.  
  1893.     If you find any "bugs" in this program, or see something that you wish
  1894.     were different, please let me know.  I can only improve MOUSKEYS if I
  1895.     know what you think needs to improve.
  1896.  
  1897.  
  1898.     HAVE FUN!
  1899.  
  1900.     Bret Johnson
  1901.     6775 South Logan Street
  1902.     Littleton, CO  80122-1249
  1903.     (303) 795-5084
  1904.  
  1905.     bretjohn@aol.com
  1906.  
  1907.  
  1908.     REVISION HISTORY
  1909.     ════════════════
  1910.     04/06/93  v1.00
  1911.     04/26/94  v2.00
  1912.        *  Added the * button (Menu Picker/Clipboard) Option, and all of the
  1913.           associated Options.
  1914.        *  Added MOUSKEYS environment variable support.
  1915.        *  Changed memory access technique so MOUSKEYS can be loaded into high
  1916.           memory.
  1917.        *  Improved the code for the /K (simulate KEYBOARD hardware interrupt)
  1918.           Option, making it more reliable and work with more programs.
  1919.        *  Added the Enhanced Keyboard test, making the default movement Scan
  1920.           Codes grey arrows rather than white arrows where applicable.
  1921.     04/28/94  v2.01
  1922.        *  Fixed problem that would not allow the /L:nn Option to be in the
  1923.           environment variable "MOUSKEYS" (a rather glaring problem, since it
  1924.           is exactly the way I recommended using the environment).
  1925.     05/05/94  v2.02
  1926.        *  Once again improved the code for the /K (simulate KEYBOARD hardware
  1927.           interrupt) Option, making it work with more programs.
  1928.     09/08/94  v2.10
  1929.        *  Once again improved the code for the /K (simulate KEYBOARD hardware
  1930.           interrupt) Option.
  1931.        *  Improved the "Mouse Droppings" syndrome - shouldn't happen near as
  1932.           often now.
  1933.        *  Added support for multiple-digit numbers when in Menu-Picker mode.
  1934.        *  Corrected problem related to marking the screen for the Clipboard.
  1935.     11/10/94  v2.11
  1936.        *  Corrected a small error that sometimes occurred when obtaining a
  1937.           number from the command line or environment variable.
  1938.  
  1939.                         MOUSKEYS 3.04        Page 34 of 35
  1940.  
  1941.  
  1942.  
  1943.     02/15/95  v3.00
  1944.        *  Added "longhand" forms for Options.
  1945.        *  Added "*-" (turn MenuPicker off) Option.
  1946.        *  Added typing the word the Mouse Cursor is on followed by the Enter
  1947.           key to the end of the Menu-Picker routine.
  1948.        *  Added Code Words as a way to enter ASCII and Scan Codes.
  1949.        *  Modified the Status Table Option so that it gives a description of
  1950.           the key when possible, and not just the decimal codes.
  1951.        *  Added a timing loop to allow multiple button presses (for example,
  1952.           pushing the left and right mouse buttons at the same time) to be
  1953.           handled more cleanly.  It used to be really hard to push and
  1954.           release multiple mouse buttons at the same time and have MOUSKEYS
  1955.           do what you wanted it to do.  This is no longer a problem.
  1956.        *  Added the /C:"Text" (fill the Clipboard) command line Option.
  1957.        *  Add the Cursor Mover option (Ctrl-Alt-*Btn).
  1958.        *  Added the Mouse Driver speed enhancement.
  1959.     05/10/95  v3.01
  1960.        *  Had problems recognizing highlighted characters in a word (during
  1961.           the menu-picker routine) using certain versions of the Microsoft
  1962.           Mouse Driver.  This has been fixed.
  1963.     05/26/95  v3.02
  1964.        *  Worked around a bug in certain versions of the Microsoft Mouse
  1965.           Driver that would not let MOUSKEYS correctly recognize Bold
  1966.           characters in a word during the menu-picker routine.
  1967.     01/04/96  v3.03
  1968.        *  Added the /O (ONLY) and /A (ALWAYS) options.
  1969.     02/04/96  v3.04
  1970.        *  Certain extended text modes (such as those with 132 columns)
  1971.           sometimes would fool MOUSKEYS into thinking they were graphics
  1972.           modes.  MOUSKEYS can now recognize these as text modes.
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.                         MOUSKEYS 3.04        Page 35 of 35
  1997.